There are countless ways of doing this. The key is to stop mucking around on the production site, you'll come to sticky grief one day!
I run a dev site on my pc and then upload at a quiet time
For customer review, I setup a development version of the site and database
e.g. http://dev.yoursite.com/ and dev_db.yoursite.com,
a release then could be as simple as cp -r /dev../ /prod.../ (of course, you may not want to over write config files or that sort of thing, so you'll have to keep that in mind)
Symlinks are also a possiblity, although i haven't tried that on dreamhost.
have your document root as a symlink to a real directory. Release your test code to another directory - test and then change the symlink for the prod site.