I just use "dumper/loader" scripts as I did in the old days with Sybase/UNIX, just converted to simple NT shell scripts, I do it every night to refresh our staging environments.
You can use sp_help_revlogin to extract logins and pws from source
- load databases via restore (I just restore via UNC paths that point to prod backups)
- fix users following each restore