You can adjust the remove doubles gap, to merge pairs of vertices that are further away. Sometimes this helps “remove doubles” merge more of the pairs you want joined, but sometimes if the gap is too big it merges vertices you don’t want merged, so adjust with caution. Another trick I use is to zoom in very close, and use Shift to fine tune the motion, so I can get the vertices very close together, before doing a remove doubles.
Another alternative to duplicating is to use the mirror modifier, which now has a “use clipping” button, which will stick the vertices on the joining edge to each other. Very handy, if your parts are mirrored.
I’d be interested in knowing if there’s a python script or other solution to this problem, too, since, as DELLCHE points out, merging the vertices along a join between two halves of a model, one pair at a time, is time consuming and tedious.