Make sure your snapshot goes onto a fast disk because it is mainly IO intensive. You can increase the -MaxBCPThreads to a number equal to the number of processors on your machine.
If your tables doesn't have uniqifiers, you might want to add them yourself before you generate the snapshot rather than them being created during Snapshot (see http://msdn.microsoft.com/en-us/library/aa237151(SQL.80).aspx, "Improving Performance While Generating and Applying Snapshots" for details).
Having said this, it is odd that you get a time out because the job is diveded into many steps. Is there anything in the Snapshot history that reveals where it is timing out? Next time you attempt, increase the HistoryVerboseLevel to 3.
MCITP | MCT