Scott's advice is top notch, a very best practice. In addition, you should
ensure you have a full suite of acceptance tests you can run against the
staging server, and pull in live testers as well to give it a good
shake-down as only real live humans seem able to do.
Another aspect of this is to both automate and instrument your deployment
processes. Capistrano seems the leading contender still amongst the Rails
community and it does a pretty thorough job of things given a standard
range of deployment environments.
Definitely make sure you have a roadmap or punchlist of everything that
needs to be done, and stick to it; when you find something you had to do
make sure to add it to the punchlist for future deploys or file defects to
fix the problems to prevent them from showing up again.
Deployment is a big deal; you've already sussed that out, but sometimes
it's not at all apparent just *how* big a deal it is.