A CMS is inherently a live system and you have to maintain it as such. I do all testing and development on a snapshot of the live site. I could just use fresh installs of DNN, but that wouldn't be a completely accurate scenario given that the many modules isntalled on the live site can influence each other, or the live system might have a problem that the fresh install doesn't.
As an example of how hard this is, it takes about 5 minutes to duplicate my 20-portal instance.. and that's doing it remotely. All you have to do is make sure that you have added a temporary or development domain such as //locahost/ as an alias in the Admin, Site settings page of the portal you want to be able to sign in to. You can use that url to access the portal and test things.
First back up the entire portal and database. Then use the backup files to create a perfect working copy of the live portal system. That is the development system. You can install and test modules or any other modifications on that. If your mods are safe and approved, the you would apply them to the live portal during a scheduled maintainence break. By apply them, I mean repeat exactly what you tested on the dev copy. If you installed a module and it works fine, then you simply install that on schedule to the live site. If it was some other change, apply that.
Even when it comes to upgrading the entire framework; you do exactly the same thing. test it on a backup, then do it again on the live site - during an outage or quiet time. If you accidentally kill the system whilst doing the upgrade, you immediately restore to the backup that you have made just prior to starting the task.
I'm really just repeating myself, but does that make any more sense?
Rob