Something must have changed, but I had no idea what it was... but suddenly, existing applications (the same version of which run fine on other machines) were crashing with IO errors, specifically "System.IO.IOException: The device is not ready.".
 
At the same time, I could no longer open VB projects in VS.NET, or create new VB or C# project ("path not found" for the C# projects, "Project 'project name' could not be opened because the Microsoft Visual Basic .NET compiler could not be created. Please re-install Visual Studio." for my existing VB projects)
 
Searching found lots of answers, including a KB article, but it (and all the other posts/sites I found) suggested I renamed my .NET Framework directory.... http://support.microsoft.com/default.aspx?scid=kb;en-us;821790 ... which I didn't do :)
 
I didn't try reinstalling because I really wanted to know what was actually going wrong 'behind-the-scences', and here is where you benefit... I found out what was causing it, so if it happens to you, you'll know too :)
 
I had a small flash of insight... everything that was failing relies upon xml serialization, which uses temp files ... so I dug around and found that my TEMP and TMP environment variables were pointing to a secondary hard drive which was no longer there. (I popped it out to put in my CD drive.... can't run Halo without it)
 
So... no temp folder and you get a whole bunch of errors trying to open config file, and VS.NET fails (with a "please reinstall" error). Problem solved, although I had no luck finding any docs on this issue...