Now, I could be totally wrong here, however, but there is a very good chance this thing will kick arse.
Why, you ask?
Very simple. The application development model, having had a brief play with the CTP version, make XCode and Cocoa look like it just walked in from 1995. The iPhone has 120K apps or so (depending on what they have removed this week), with a development model that most of the developers using it had to learn, from scratch, and for those used to a modern language, is backward, antiquated and alien. Thats one hell of a learning curve for most developers. And by modern I mean Ruby, Python, Java, C# et al - basiclaly something invented in and for a date starting with 20.
Obj-C only makes sense if you know Obj-C, C or C++. If you only know one of the above languages, it's has the potential to confuse the shit out of you - and leak memory all over your nice new carpet.
Contrast that with WP7. It uses .NET and Silverlight/WPF. There are a lot of people who have to adapt to a small change in the API - those who know Silverlight already - and a massive, orc-ish horde who just need to learn a bit of Silverlight over the top of their up-to-8-years of .NET. VS.NET still owns XCode for ease of use and productivity, especially VS.NET 2010. C# and the .NET managed environment kicks Obj-C and Cocoa all over the park* for getting things done. I came to this realisation when I used CocoaTouch and found that I could, using the .NET (mono) libraries, in about 4 lines of code, what took around 50 in Cocoa. (connect to URL, parse a model out of the resulting XML).
Aside from initial market share (WP7: zero. iPhone: lots) and rabid fanboi's ('cos, ya know, it's not cool to like Microsoft anymore), I don't see where the iPhone has a development advantage over WP7. And these days, it is all about the apps. WP7 will ship with the same basic features as the iphone, in a very similar package. It's the apps that make a difference.
Throw in what happens when you can use a single technology (Silverlight, .NET, c#) to write you mobile app (WP7), back end (Azure or self-hosted), desktop and web (Silverlight or WPF). Right now, with the iPhone, I have to use Obj-C/Cocoa for Mac and iPhone, something else for Windows, and something else for backend/web (Rails? Flash? whatever else). With WP7, I can stay within the same universe, or I can move out of it as I like. If I'm a single person or small team, I know which way I'd be going.
We'll see, I guess. I think Microsoft has one bit covered - the development story - now lets see if they can solve the other story: make consumers want it. Thats the hard bit.
Note to Microsoft: subsidise phones via MSDN. Get the devices into developers hands cheaply, and not tied to the useless US carriers. Not just at PDC or TechEd, but for anyone with an MSDN subscription, ActionPack, MS Partner status etc.
Side note: I wonder if there is a "market" for a Silverlight-style markup for CocoaTouch. Same idea - build the object tree as XML, parse it down to code/objects at compile or runtime. But using UILabel et all. Could be the best of both worlds. Same business logic, replace the views and some of the controllers, and have an app which works over both platforms. Actually, maybe thats what a XIB is....
*unless you have been using Obj-C for a long, long time. This is obviously not going to apply to the likes of Mr Gemmell and co, or anyone else with a few years of experience invested in iPhone apps.