How to reset the center of rotation of the 3d view when it is not the center of the view
To re-center the 3D view pivot to a more convenient point, select a vertex (or series of vertices) near the area you're working on and, in Edit Mode, hit Numpad . (the period key on the number pad). The view will now rotate around said element, avoiding those situations where it's nearly impossible to work on an area because you can't get a good look at it (when it rotates too far for you to focus on that area easily). You can also use this shortcut (called "View Selected" in the keymap) in Object Mode to fit the active object in the view and pivot around it.

You'll have to do this every so often as the geometry of your object changes (or the view behavior otherwise gets weird). I recommend using "Rotate Around Selection" under View Manipulation in File > User Preferences > Interface because it makes rotation behavior more predictable.

This shortcut is also helpful when dealing with this problem:Ctrl + Shift + MMB  (Dolly View) changes the view center (which the API calls the "Location" component of the 3D view), which is the source of the problem.

Also read this, it explains how the 3D view works and why your problem occurs (Credit to iKlsR for the link):
Why does the zoom sometimes stop at a point?