First make sure your transaction log is as empty as possible (not small, empty). If the database is in
SIMPLE RECOVERY then make sure that there are no open transactions. If the database is in
FULL or BULK LOGGED RECOVERY make sure there are no open transactions then take a transaction log backup. Then you can take a full backup of the database, move the backup, then restore on the new instance.
Backups are generally considerably smaller than the database and by making sure that your transaction log is as empty as possible this will reduce the size of the backup itself. also if you are using the enterprise edition of SQL Server 2008 you can use the
COMPRESSSION option of the backup command to further shrink the file.
Fair note, shrinking the database (data or log files) will have no affect on the size of the backup file and will be counter productive when you restore it.
You won't have to create new users but probably will have to create new logins. You can use any number of scripts out there to generate the logins. I have one here. Also if any of the logins already exist and are SQL Server logins they will probably not have the same SID so the users in the database will not automatically attach to them. You can use the system stored procedure
sp_change_users_login to fix those cases. Windows logins will have the same SID and will automatically link up with the users in your database.