Duplicate is just duplicate. It just copies with or without instancing. For mirroring purposes do not use the instance option. Just do a straight copy with a -1 scale.
I'm assuming you're using polygons so after duplicating combine the halves with the Polygons -> Combine function. After that apply Edit Polygons -> Merge Multiple Edges with a small tolerance (something like 0.001). You can change the tolerance afterwards too. There should be an entry called polySewEdge1 in the inputs section of the channel box. Click on it and you'll see the tolerance setting there.
I'm not sure if this is in 4.0 but in 4.5 you could just use Polygons -> Mirror
Geometry. That will do the necessary steps for mirroring. You still need to specify the axis and direction for the function in it's option box. It will create (among other things) a polyMergeVert1 node in the inputs and under that you will find a setting called distance. This is basically the same than the tolerance I described before.
Hope that makes any sense. It's quite late atm