When my Pi and my computer are both attached to local ethernet, my webcam streaming is okay. As soon as one is on wifi or I'm remote, I really notice the lag.
I'm guessing the problem is the bandwidth thrown through mjpg_streamer. That's backed up by blog posts such as this; there's a difference between mjpeg and video, most of that comes down to bandwidth (and the obvious CPU tradeoff).
Is this well-trodden ground? I haven't found much other than configuring various webcam sources with mjpg_streamer.