I think the biggest secret is to get the web.config settings right the first time around.
You can't launch your site and say "whoops" I meant this database or I'll just fix the permission problem that caused that. It's way too late.
The second biggest secret is to use app_offline.htm.
Just because you are installing your site does not mean that someone or somebot can't come along and trigger the install without your knowledge. You are in the middle of editing your web.config when your friend refreshes the page to see how it looks. Bam! Someone just found your site on a search engine. Bam! A bot happens to examine the domain. Bam! What information from web.config gets used? Is it correct? Did it install to a different server or use a different objectQualifier? Were the machine keys correct?
I believe the live, online nature of websites is the second largest contibuting factor to problems with DotNetNuke, especially upgrades. By far, the most popular problem is for people to RTFM.
Perhaps we need an install/upgrade checklist that must be used before before launching or taking off.
Many simply attempt to fly by the seat of their pants, then can't understand why they crash. They prefer to blame it on something mechanical.