Microsoft shot itself in the foot when it made IE 6 as non-compliant as it could. Too many "professional" programs use IE6-only active-X controls, and most of the companies that created them don't exist anymore to update them to a modern framework. Worst are the in-house programs that no-one will take any credit for. How many payroll programs have to be run on IE6 is beyond me, but I've worked at three major companies, and all 3 require IE6 for just that purpose (in addition to many, many other reasons).
If Microsoft embraced open architectures from the get-go, it wouldn't find itself having to convince its own customers that the software that was "superior" only 3 years ago is now total crap and they need to move on.