Depending on your needs heroku might get you very far, very fast. I like to use it for clients whose biggest hurdle is not the technology, but in rapidly building a product and iterating quickly. If you already know your customer base, your eventual architecture, and how big your app is going to get, you might prefer to jump ahead to engine yard or amazon, but if you are launching a new app and are still in the process of discovery and exploration, you may find heroku is a good place to start. I work with a lot of small startups and prototype apps, and I think heroku is great for that. Its easy to launch an app quickly, engage users, add new features, scale it up and down as needed, lots of plugins to help you along, while keeping your IT costs reasonable.
Now if the app really takes off, in a sustained way (not just a press-release spike), you will have to decide what changes you want to make to the architecture, and if you have outgrown heroku. I think its great to have Heroku, EngineYard, and Amazon as deployment options. They all have great free options, and each of them has their sweet spot.