We normally use our own in-house development servers, as they are already setup and configured to our solution server requirements it is cost effective and efficient.
For production environments we we recommend a HA Server Cluster. A minimum of two servers would be configured in a high availability fashion so that you can kill one and the outside world would not know. http://www.stsoftware.com.au/site/ST/blog/article/how-to-configure-load-balancer-/
Two client facing servers allows us to do a rolling restart.
The level of Disaster Recovery environment we can provide is only limited by client need and cost. As a minimum standard DR we have a 2 hour hardware replacement guarantee from the hosting provider and the system is backed up off site. The next level of DR would require 4 servers at a minimum.
The backups ( quite expensive half the cost of the server itself) are off site and kept for 1 week.
The system itself records every change ever made, we can tell which user changed which fields/values from the beginning of time. This is done by having a live and delta tables. We can view record sets at any point of time.
For the staging we recommend using our existing servers. When we do an install, it's a complete clean install and we copy the configuration from the previous release. With two ( or more ) client facing servers we can do a rolling restart without a noticeable outage. We can fall back to the previous release by changing the symbolic link and restart. The application database ( not client data) and full source code is included in the install.