Regardless of the deployment scenario you're working with, there are some basic guidelines for deploying a CMS site.
Create deployment profiles. Creating deployment profiles in SDM will eliminate the manual selection of objects to deploy and will reduce human error. You'll probably create several profiles for the manual deployments between environments.
Use scripted incremental deployments for moving content to production. As content is added to the final environment, it can be moved automatically to production on a scheduled basis.
Make sure to move file-based assets to an environment before using SDM to move CMS-based assets. Moving CMS-based assets to an environment before the file-based assets can cause errors. For example, if a TGI is moved to an environment before the template file, all postings dependent on that TGI will "break."
Use a SQL backup and restore to initially move a CMS database. Especially for large repositories, using a SQL backup and restore will be faster than using SDM. However, if you're moving a database between environments that use different Active Directory structures, you'll have to manually reconfigure the destination CMS environment so that it uses the appropriate tree and user IDs.
All environments up to production should use a common Active Directory structure. In an intranet deployment, all environments, including production, will likely use the same Active Directory structure. In an Internet deployment, however, the production environment will probably use a separate Active Directory structure. Keep this in mind when you've moving TGIs, channels, or templates between environments. For most environments, you'll need to move groups and users along with the content. However, when moving content from production, you may or may not need to move groups and users.