In the UV/Image editor, and consequently when viewing the render results, the zoom has pretty big increments. If I render at 1920x1080 or larger, I can get the image to fit almost perfectly to the viewport. However, if I render at 1280x720 (which I do occasionally), I either get a ~2.5cm space between the edge of the image and the edge of the viewport or the image gets cropped by ~0.5cm. Is there a way to get smaller increments?
You can use ⎈ Ctrl + MMB to zoom in and out smoothly. Keep in mind you are meant to press the MMB and drag up or down to zoom in and out, respectively. This works in all editors which support zooming.
Another thing to keep in mind is that, for instance in the Movie Clip Editor, when set to Graph, there are two zoom axis - a vertical and a horizontal one - which can be controlled separately.
There is also another tool called Zoom to Border, which can be accessed through Shift + B. This let's you use something that looks like the Border/Box select tool, but instead of selecting, it zooms in to the specified area.
Note that in the Node Editor (more specifically in the Compositor), any other zoom method will zoom into/out of the nodes themselves. To zoom in in the background image (when a Viewer node is connected) you can use Alt + V and V to zoom out.
Adding to gandalf3's answer, you can press Shift + Numpad Enter, when looking through a camera in the 3D View, to make it match the zoom level 1:1.