That's pretty blatantly unfair to Microsoft. C++ as a standard wasn't even ratified until the year that C++ 6.0 was released, meaning that there were at least 5 versions of the program released while C++ was in development. If this were something GNU/Linux related, I doubt you'd be just as quick to slap them around for not conforming to a standard during development that didn't even exist. I'm not saying that you, personally, are a Linux-lover, just that it's a lot more trendy to be quick to blame Microsoft for all the problems in their software.
Once somebody made the decision that "for loops are shorthand for while loops, so the declared variables should be accessible outside the loop" or something else happened, and it was released, and thousands and then millions of people started using Visual C++, Microsoft faces a conundrum. They can fix the language and piss off everybody who doesn't feel like they need to spend the time, and therefore money, to fix their code. Those people will hold it against Microsoft, possibly not buy the new version of their software, and go on holding Microsoft accountable for bugs in the old version of their software. Meaning Microsoft either has to support multiple versions of software, or they have to stick with the old behavior. Since sticking with the old behavior is less risky, it makes more sense while Microsoft is still competing with other companies. Nowadays, Microsoft doesn't really have to care and part of their business strategy is demonstrating that they're willing to go the extra mile to get "standards compliance".
As an example, look at all the crap I got for seriously revising the syntax for the scripting system once. I had experienced developers acting like I was incompetent just because I changed it, regardless of whether it actually made things better or not, when my changes affected all of a dozen people directly and maybe some hundred thousand people. Microsoft makes changes to the compiler, it affects millions of people directly, and billions of people indirectly. What kind of ****storm could they expect to hit the fan if there wasn't so much pressure to conform to standards as there is nowadays?
All that being said, MSVC2008 does give you
main.cpp(35) : error C2065: 'i' : undeclared identifier
So when I read your comment it comes across as a symptom of the problem that would cause Microsoft to say that they should keep things the way they are, because presumably if they left COFF support in and didn't change anything, you'd be upgrading to 2008 and using that instead. Granted, I don't see any good reason for them to take COFF out except to force people to use their proprietary debug files, but I doubt that's something that couldn't be fixed given time, effort, and some well-place #defines.