PaaS locks you out of market forces that work in your favour.
Amazon has had 42 price cuts. On top of Moore's law pushing down the underlying hardware prices, open source technologies like KVM, Hypervisor and Xen or OpenStack and CloudStack make it easy to build IaaS companies cheaper and the competition has brought the prices down even further. A Linux server for $5 month with SSD, redundant network and power, security and instant provisioning was not possible 2 years ago.
Have we as PaaS customers benefitted from any of that? No!
PaaS locks you out of open source.
If you decided to use a NoSQL database in your application you have many options: MongoDB, CouchDB, Cassandra and many more. You can install and maintain them yourself or buy them as a service from a variety of providers. You have the second option with a PaaS provider. For example you can use MongoHQ as on Heroku. But for any open source tool, you will have to wait long enough for it to be come a mainstream product and profitable to run as a service. Think Cassandra or MariaDB. You won't be able to find them on a PaaS provider because it's not economically viable to provide them as a service on a PaaS.
You're losing out on innovation.
PaaS is expensive.
We see more and more PaaS customer saying that PaaS is expensive. Why? First you don't know what you're paying for so you can't compare them with other vendors. What's a Dyno anyway? Apart from network traffic, all PaaS providers invent strange names for their CPU and Memory "units". Although this is a result of the PaaS design, it makes it impossible for you to compare them with running your own servers.
Secondly, you end up paying many different vendors so you can have things like database as a backend or some basic metrics. Almost everything you need to do on a PaaS will involve a vendor and their margins. They might not make much money each, but collectively they make up a large bill for you.
PaaS makes you choose between convenience and flexibility.
When you start a new project you mostly want to get on with it and just build your idea. But as your idea grows you will need more flexibility: you need different open source technologies, connections between servers, background workers, etc and this is the problem with PaaS. PaaS doesn't take away the pain of infrastructure. It just postpones it.
This doesn't mean PaaS doesn't have a place to play. Public PaaS is the perfect place to test your new ideas and see if you can take them to the next level.
There are many cases where a public PaaS solution is perfectly valid, reasonable and economic. Knowing when a PaaS is a suitable solution is in your benefit and acknowledging this by PaaS providers is good for the whole industry.