Unless Heroku has changed, you absolutely should not host a production site using a free account. If your site doesn't get any traffic for a certain period of time, they spin down your instance. This means that the next subsequent view will have an abnormally long load time as they wait for your EC2 instance to spin back up. The $20/mo at Rackspace (or any other provider) is well worth it.
App Engine has this problem too. The solution is to run a cronjob somewhere (App Engine has cron built in, so I've used that in the past) that hits your frontend every ~10 minutes or so. Instances never go stale, and on App Engine, you get 28 instance hours/day for free, so you can stay under the free quota as well.
On Heroku, you don't even need to manually run a cronjob or set up something that feels like you're consciously trying to game the system. If you sign up for the free tier of NewRelic that Heroku offers, it'll automatically ping your dyno often enough to prevent it being spun down.