The biggest problem comes in jamming when you feed the document through the second time to print the backside. To minimize this problem, you want to minimize the curl that the paper acquires in passing through the printer. So, if your printer normally stacks face down (to make the page order come out right) rearrange it (often this involves flipping out a plastic paper catcher on the end) so the pages feed straight through and stack face up. Then acquire and build psutils, and run your document through the following commands:
pstops '2:0' <original.ps >odd.ps
pstops '2:1U@1(1w,1h)' <original.ps >even.ps
This puts the even and odd pages in different files, and rotates the even pages 180 degrees so the top and bottom are reversed. This lets you feed the paper back through with the old trailing edge at the front; since pages get the most severe curl at the leading edge this also helps reduce jamming. Print odd.ps, flip the output pile face down and backwards, put it back in the input magazine, and print even.ps.
If the printer is fed by a shared print queue, you can leave the paper magazine out after you put the first pass pages into it, before you submit the second half, then make sure your job is at the front of the queue (waiting for you to replace the paper tray) before you reinsert the tray.
Alternatively, particularly with serially-interfaced printers, there's a long enough delay to pull the paper tray out between two print jobs, so you can submit them both, then pull the tray out as soon as the last page of the first job finishes. The ``pstops'' invocations report how many pages they emit, so you can count pages to determine when the first one is done.