First of all, you need to use the .hdr or .exr formats instead of .jpg. No matter what tool you used to capture the image, .jpg as a format can only hold red, green, and blue channels that go from zero to one. You can imitate some dynamic range with judicious use of RGB curves but for the best result you will need an image that has high dynamic range and was saved in .hdr or .exr format, since those are the only formats Blender reads that are meant to handle such data.
Second of all, besides that you are mostly setting up the environment correctly. The only additional step you need to take is to enable Multiple Importance Sampling for the world. This property is found in the Properties panel, under the World tab, under Settings, and it will make your render converge more quickly. You should always turn this on unless your environment is a constant color, in which case having it off will save a little bit of render time.

If you look at some balls from the Front view, you will see that the garbage portion of the image is clearly visible in the background, but everything that's in the image of the mirror ball is reflected correctly onto whatever geometry is facing the viewer. This situation is ideal because it puts all of the details from the mirror ball onto the geometry, where it can do its job by looking good.
If you want something else to show up in the background besides mirror ball trash, there are a few ways to do it. The first option is modeling most of an environment so that the background isn't visible. The second option is to set the background to Transparent in the Properties panel->Render settings->Film, which will make the background transparent so you can composite or paint one in later. And, finally, the third option is to use the Input->Light Path node to show a background image to the camera and the mirror ball environment to the objects in the world. Here's something like what you might get from such a setup:

You can use any sort of image, photo or matte painting you like here, as long as it looks good and makes sense in the context of your render.
The next problem you'll run into is that you might not want to render with the camera aligned to the Front view. So, you need to rotate the environment texture around until you get all of the mirror ball trash in the background of the camera's view. You can use the Vector->Mapping node for this. The Z rotation will rotate the environment around the Z axis, which will usually get you the result you want.
This all gets much more complicated for animation because you have to interpolate between a sequence of mirror balls to get a result that fits in with your real-world footage, and you would have to animate the Mapping node which might be possible with drivers but probably wouldn't give you the perfect result you might be looking for. For rendering animation that's going to be composited with real-world footage I therefore prefer equirectangular maps that were digitally stitched together from carefully bracketed, Macbeth-chart calibrated HDR photographs of the set, as the amount that you have to animate the Mapping node is minimal and you don't have to use an image sequence for the environment texture which Cycles doesn't support in a straightforward way.