Detach, copy, reattach is probably the fastest way to copy a database to another box, although there are plenty of other choices. Using BACKUP / RESTORE is probably the safest, and it doesn't take much longer than detach/copy/reattach does.
the best way (In My Opinion)
is to perform a transfer database task in dts
it copies everything without having to require a detach then copy then attach.
backing up and restoring is comprehensive but takes a while to perform
and the objects are in whatever state they were in when you backed em up
transfering the db is fast and you get brand new objects so for example indexes are created new so they are not fragged..