Fortunately, I didn't waste too much time on this runtime error before googling and finding http://www.wackylabs.net/2005/12/strange-aspnet-20-error/. It turns out a compile time error is not thrown when there's a naming collision between ASP.NET 2.0's Page.Title property and a server-side control given the ID of "Title". Instead, the page in question will build no problem, but won't run. In my case I had given the ID of "Title" to one of a TON of new textboxes on a page I was working on in an ASP.NET 2.0 application.
Why this is able to make it past the compiler is beyond me.