Perception is king
That's what my old boss used to tell me.
The cloud offerings from Google, Amazon, and Microsoft (and probably the rest) all have fairly important distinctions that obviously impact their suitability. For example Google AppEngine supports Python and Java. If you wanted to run a web application Google would be an obvious choice. Assuming you can work around the lack of support for relational databases. Azure supports relational and tabular data, and the dotnet platform, which obviously means C# etc now. It's not hard to see support for F# and possibly IronPython / IronRuby in the not too forseeable future too. EC2 doesn't seem to cover the full story. AFAIK there is no app server .. simply a set of service endpoints for powering other apps .. maybe they should have gone with Amazon AppEngine
In terms of what you can do on your VM, Amazon EC2 grants you full admin rights, which means you can install whatever the hell you want to make your app sing. AppEngine and Azure both limit your privileges and thus the freedom to install that annoyingly essential 3rd party component. If that is a problem for you then EC2 looks increasingly attractive.
The scalability and reliability limits will likely rarely cause a problem on any platform since surely for the vast majority they will exceed anything they can provide 'on premise'.
I don't think perception has much relevence here, but then again I thought that before said boss fired me