Until very recently, Amazon did not provide for persistent storage. That is to say, your virtual server didn't have a permanent hard drive; once the machine is turned off, your data is gone. This makes it difficult to host databases, for example.
Last month Amazon introduced a new storage service called Elastic Block Store which is kind of like a persistent hard drive you can mount after the fact, like S3 but more hard drive-ish. It's so new it wasn't really part of the equation at the time.
Amazon does not yet offer hardware load balancing, something we needed for the web hosting side of things.
One one hand, it's attractive to only use the resources you're going to need per hour. You could save some money by spinning up more nodes for a cluster only during your peak times. In reality, that setup is amazingly hard to configure and monitor. I would consider using EC2 for offline batch processing of lots of data, like transcoding videos. I would hesitate to recommend it to a client for hosting a critical service, even "just" a game.
Finally, Amazon is so different from the other VPS web hosting services I mentioned that migrating away from them would have involved more effort, so there is the "vendor lock in" concern also.