One possibility seems to be to create a .bak file for the database. But we've run into issues with collation when moving .bak files between servers that aren't configured the same.
Out of curiosity, may I ask what kind of issues?
Backup/Restore and Detach/Attach methods are not supposed to change collation on target system e.g. collation remains the same as the one in source system.
As Paul says, those techniques don't change your collation.
So a restored database's collation will be consistent with its source, the database's default collation should also be the same.
However, if the server uses a different collation to your database, then there is a small inconvenience you're likely to run into:
Whenever you create a temp table, it will go to tempdb, and use temdb's collation as its default.
If you then try compare data between the temp tables and your regular tables, you will get collation errors.
To resolve this, create your temp tables specifying a collation clause COLLATE DATABASE DEFAULT for each column. This will create temp tables with the same default as your current database.
If this doesn't work, then you may already have inconsistent collation in your database; either due to changing the database defalt at some stage or explicitly specifying collation on some tables.
Resolve this by simply explicitly specifying the exact same collation when you create the temp tables.
There is one other thing worth knowing: you can explicitly indicate which collation to use on comparison expressions. E.g. Table1.Col1 = Table2.Col1 COLLATE XXXX
E.g. You might do this to force a case-sensitive comparison on case insensitive columns. But be warned, the technique can prevent the use of indexes, because indexes are stored in collation order.