Windows code is too complicated. It’s not the components themselves, it’s their interdependencies. An architectural diagram of Windows would suggest there are more than 50 dependency layers (never mind that there also exist circular dependencies). After working in Windows for five years, you understand only, say, two of them. Add to this the fact that building Windows on a dual-proc dev box takes nearly 24 hours, and you’ll be slow enough to drive Miss Daisy.
That build process makes the whole thing less than agile, for sure. Their long term "integrate everything" strategy has ended up painting them into a corner - and it's one they'll have more and more trouble getting out of. At some point, if they expect to move forward, they'll have to do what Apple did with OS 9 --> OS X -- make a clean break.