If they can't get enough devices out in the market to make it a compelling target platform for app makers, it won't matter that they have all the pieces.
That's increasingly looking like the outcome. Why would anyone develop an app for W7 before iPhone or Android, assuming they don't have incumbent knowledge of the W7 environment (and even then...)?
I wouldn't underestimate the huge number of .Net / Windows developers that exist for Microsoft's ecosystem. If they manage to line their technologies up just right and make a big push for the mobile space, there's a huge developer mindshare that's entrenched in the Visual Studio / .Net world. A lot of these people have never used a Mac or other OS, and never programmed for another platform. Many of them don't have the interest to switch over to Java or ObjC and would prefer to work in the MS ecosystem. These are the people who would be developing the apps.
If a developer's personal inertia / sloth around learning a new framework is such a factor that they'll choose to develop for W7 rather than iPhone or Android, that doesn't bode well for the quality of the app they're going to produce. Most great devs I've ever worked with are perfectly happy jumping languages / frameworks if it means their work will be more successful.
This has been Microsoft's strategy all along, and it has been an abysmal failure.
A mobile app blown up for the desktop sucks as a desktop app, and a desktop app shrunk down into a mobile app will suck as a mobile app. Apple figured this out, and had the talent to invent a usable interface paradigm for mobile. Which led them to the highest market cap in the tech industry, with a lot of growth potential left.
That's increasingly looking like the outcome. Why would anyone develop an app for W7 before iPhone or Android, assuming they don't have incumbent knowledge of the W7 environment (and even then...)?