Why does origin point change its location after joining objects? As you can see there are no hands in the 1st picture.
I created the hand separately from the body and then joined them with Ctrl+J.
After that the origin(I'm not sure it's called so but I mean a thing poited with arrow) changed it's position and I suppose it's the reason of the mirror modifier fail.
How to change coordinates of origin or to solve the problem if the origin is OK?
It's likely that you selected body object first and the hand - second, then joined them with Ctrl+J. This means that origin point of the joined object was where it was for the last selected (i.e. active) object prior to joining, and in your case that was the hand. Probably the latter had its origin point where it is for the resulting object on your screenshot.

It should be possible either to:  


undo joining and join again with body object selected last in order to preserve origin point where it should be for Mirror modifier to work properly,
or reposition origin point which should be easy. In Edit mode select the center edge loop of the body mesh, snap 3D cursor to it and in Object mode put the origin point to cursor.


Also read How can I make the mirror modifier work right?

As a side note, correct the normals in your objects by Ctrl+N as this can give some unexpected results while modeling in particular. See Why are some faces in my mesh darker?