The main issue at hand is that the original image continues to occupy space on the page even when its opacity is set to 0. This becomes evident when changing the opacity setting from 0 to 1; both images will then be displayed next to each other upon hovering.
To address this, you must find a way to remove the initial image from the document flow during hover. Typically, this involves setting the display property to none. I have made adjustments in the jsfiddle demo to demonstrate this solution, though the transition may still need some refinement. I will update my response accordingly.
http://jsfiddle.net/2qVK2/19/
UPDATE: The latest version enhances the width settings and improves the smoothness of the animation.
http://jsfiddle.net/2qVK2/20/