This post of Jeremy D. Miller hits it right on the head:
In .NET development, and especially ASP.NET WebForms development, you often have to go out of your way to create testable code.
Also see my earlier post about What's wrong with ASP.NET. I'm also glad and pleasantly surprised that Scott Guthrie joined the discussion (read the comments). You should definitely read his comment as it contains lots of useful information.
ScottGu mentions the Plasma project on CodePlex.
It allows you to create an ASP.NET application in-memory (without requiring a web-server or a separate process), and allows you to simulate http requests to ASP.NET (effectively mocking HttpContext objects through the pipeline).
Why isn't this project discussed all over blogging land? When you read the Weblogs@ASP.NET the last couple of days, there are like a thousand announcements that the new CTP of Visual Studio Orcas is available, but nothing about Plasma. Something to have a closer look at!
ScottGu also recommends using WatiN for integration tests. Very interesting as this is also an open-source project ;-).
What it all comes down to is the fact that applying presentation patterns (like Passive View, Model View Controller, ... etc.) is somewhat awkward with the current versions of ASP.NET and it's code-behind / event model. What I would like to see in the next version of Visual Studio is that you have no other option than to separate your code into a view and a presenter/controller (and add some more testability options while they're at it). I very much like the approach of MonoRail and I hope that it will soon get the credits it deserves.
Again I'm glad that a smart guy like ScottGu appeared on the stage and hopefully he will make a difference.