MS needs emulation and preferably LLVM
MS has been here before. When NT ran on a multiple architectures they let developers fairly easily target different Windows architectures from a drop down in DevStudio. How many developers actually bothered to target those architectures? Practically none of them.
It's a pain in the arse to build the same code multiple times, test, QA, certify, produce, sell and support products for each architecture. It's just not economically viable.
Microsoft really needs to implement some form of x86 emulation in ARM or it will suffer a dearth of apps. No legacy app is going to work on the device which includes a vast array of useful stuff. It doesn't have to run fast but it has to run. I expect an emulator could probably produce something passable, maybe netbook fast given that the Win32 APIs would be native and only the app's code would be emulated.
In parallel MS really need to move devs away from targetting chipsets at all. Things like LLVM mean I could compile a C++ app into an intermediate form and have it run on any architecture. At runtime the intermediate form would be translated into native instructions so it doesn't matter to me the developer what chipset is underneath. That's what Microsoft should be promoting - a platform neutral way of developing apps. I'm not talking .NET either but lower level. LLVM would be a good example to follow.
I expect even Apple will go this approach too. They sponsor LLVM after all and use it in iOS. While they may still support fat binaries, it's still a pain to test two builds of the app. Therefore I expect they'll include LLVM support in their next OS X update and devs will be expected to build with that. Then when their ARM device turns up it won't matter, the apps will still run.