When to use AWS
I just moved all of my personal hosting off of AWS recently. The primary reason was cost. AWS is expensive especially when your requirements are static.
For example, your application needs 5 servers with an elastic load balancer plus a multi-zone RDS MySQL instance, the minimum you'll pay per month is north of $250 for fairly low powered VM's. Even if you use reserved instances you're average monthly cost will still be around $200.
By switching to a more standard VM hosting company, you can easily get your average monthly cost to around $100 (or even less if you don't need a lot of CPU's).
Personally, I switched to Linode. I found their offerings to suit my needs and I'm now saving 66% per month. What am I losing? Practically speaking, nothing. Hypothetically I'm losing a lot of flexibility that AWS offers. AWS has robust support for API management of hardware, auto-scaling, automated RDS backups and a lot more obviously. But my requirements are pretty static, so I am comfortable with the trade-off.
Amazon is doing great things in this space and releasing some great technologies. In doing so they are creating feature/platform lock-in with early stage technology companies. Amazon is doing with AWS what Apple is doing with iOS/Mac. By making the switching cost so high Amazon is ensuring the long term viability of their business.
I love AWS and I will continue to use it for new projects where the requirements are a lot more fluid. Once the project reaches a point where the requirements are set, I'll then deploy it to another hosting provider.