Why does the mirror modifier sometimes give me an overlapping mesh?
The reason you're getting an overlapping mesh is because the Origin point of your object is offset from the center line of your model. The Mirror modifier uses the origin to determine the symmetry line, so to fix the overlap, you need to move the origin back to the centerline of your mesh.



You can do this one of two ways.

Method #1. Move the mesh back in line.

You can move the mesh manually back to the center by grabbing it in Edit Mode and moving it along the respective axis (in this case the X-axis) until the center vertices are lined up with the object origin.

This is not generally an ideal method, though, as it can be difficult to aline the center vertices perfectly without employing other steps. I recommend method #2.



Method #2. Move the object origin.

The second way to correct this problem is to move the object's origin back to the center of the object. You can do this in a couple steps:

1. In Edit Mode, select the center vertices and press Shift + S and choose Cursor to Selected.



2. Next exit Edit Mode with Tab.

3. Now press Ctrl + Alt + Shift + C choose Origin to 3D Cursor.



4. Problem solved!



Preventing this in the future

What you need to keep in mind is how the object origin moves. Anytime you move the object in Object Mode the origin will move with the object. 

However, anytime you move the mesh in Edit Mode the origin will stay put. The reason for this is because moving the mesh is not actually moving the object, you're simply moving the data that belongs to the object.