Thirded. I suspect part of it is some people go into GAE thinking they can get away with the front-end instances only, which are limited in what they can do (can't open any sockets/files, limited third party libs as a result, a few other things which irked me that don't spring to mind), versus the compute instances (which in my understanding are more like a traditional VM offering, but that's credit card territory, no prototyping there afaik).
One example is the authentication API being awkward, it seemed like you had to choose [1] either Google's authentication, Google App's authentication or OpenID (you can roll your own auth, its just not obvious from the scrappy admin console - I got the distinct impression they were rushing to bolt things in there w/o putting too much thought into it).
An app written for GAE is going to be pretty painful to port elsewhere as a result of the APIs you have to code to as a result of those limitations (well, now you can port to AppScale pretty easily I guess). The whole thing did feel like a lock-in attempt to me.
I also had to try and estimate the costs a client would face based on requests/minute and some other metrics, and it was tough; basically boils down to 'suck it and see' for a realistic estimate.
For prototypes/pure frontend apps/wikis/static content I'd probably still use it (with some defensive coding to make moving it easier if needed), but I found it pretty frustrating all around when you need to move outside their box.
I was a fan of AppEngine in the early days, and built a couple of small projects with it. There is a reason they remained small.