Its the best WP7 device out there but as an iPhone 4S user switching to it is a downgrade IMHO...in more ways than one.
The iPhone has a better CPU, GPU, Screen Resolution, Camera, and overall Ecosystem. Despite being 6 months older.
Why does the CPU and GPU matter though?? Do you own a iPhone, any Android or Windows Phone device just to sit there benchmarking and feeling good about yourself because you get 10 points more in a certain benchmark??
The Windows Phone operating system just simply doesn't need for dual core CPU's, quad core GPU's or 2ghz beasts. It runs so fluid on mid spec hardware because it's coded to efficiently do. A user doesn't need a high end spec smart phone because the operating system on it has no lag, no slow downs and runs the same as it would on a high spec phone.
Nokia obviously realized this and chose to use a more mild spec hardware because they simply didn't need to be bleeding edge and Microsoft haven't supported high end hardware. At the end of the day, if the Lumia 900 had a faster CPU and GPU, it would cost a boat load more for no real subjective gains other than higher benchmark scores.
I do agree a higher resolution display would be better, I love Apple's retina display because I do notice the pixel pitch differences. But ATM Microsoft don't support higher resolutions than 480x800
The camera, yeah Nokia really shot themselves in the foot. It's the same as the Lumia 800 and should be snapping shots to the iPhone 4s level.
Apple's App Store wins over Google Play and the Windows Market in terms of how many apps there are. But as time goes on, the Windows Market will have the big player Apps too and you'll have you 1000000 flash light apps.
Personally, I'd rather a Lumia 800 over the 900. I find the 800 looks nicer and the 900 is quite large. I own an iPhone 4 and waiting until the iPhone 5 or next gneration to come out as I'll stay in the Apple ecosystem until the Windows Phone OS is more mature or release a phone that ticks all my boxes.