Here's what I do:
1) Before the client's domain is pointing to DH server's, I create a subdomain in the panel (say"dev.some_domain_i_own.tld" or "clientname.slowdownnow.org"), filling in the website directory information with the domain name the client will be using to access the site. This creates a directory "clients_site_name.tld" in my machine user space.
2) I build, test, and populate the site with initial content using the subdomain I created in step 1. I'm careful to only use *relative urls" when "hardcoding" links within content items to other locations within the site (not really ever needed, but thought I would mention it just in case )
3) I create "clients_site_name.tld" domain in the Control panel, specifying the same directory I used for the "development" subdomain.
4) When client is ready to "launch", he point's his DNS to DH's nameservers, and I wait for it to "propagate".
5) While waiting for it to be accessible, I edit the configuration.pgp file and correct the variable $mosConfig_live_site to reflect the new url. Additionally, if I decide to, I'll create a new MySQL host via the Control Panel with the "new domain name" and edit the $mosConfig_host variable after the new hostname has propagated - this step isn't necessary, but sometimes I like to have the hostname match the domain name.
6) Once the site's is available via DNS, I open the site's Administration panel at the new url, and check the Site Global Configuration screens to adjust things as needed; check Database-->Hostname (if I changed it), Cache-->Cache folder (if used), etc. to account for the new "home". of course, I could have done this before "flipping the switch" on the DNS change (though the site wouldn't work properly at the "dev" url at that point). Either way works depending upon which url you want to be "misconfigured" for the few minutes it takes to make the configuration.php/administrator changes.
7) If I have used SEO, I tweak the .htaccess file to correct as needed.
This has worked really well for me. No re-directs involved, can develop "online" using a temp url, and "going live" takes about 5 minutes.
Of course, there are a lot of variations to this, such as just renaming directories and editing the configuration.php, or just using a separate subdirectory under machine user forsubdomain, and pointing the client's domain name there, etc. - it's all good!