This approach requires two copies of an image: one in grayscale and the other in full color. Using the CSS :hover psuedoselector, you can update the background of your element to toggle between the two:
This could also be accomplished by using a Javascript-based hover effect such as jQuery's hover() function in the same manner.
Consider a Third-Party Library
The desaturate library is a common library that allows you to easily switch between a grayscale version and full-colored version of a given element or image.
You don't even need to use two images which sounds like a pain or an image manipulation library, you can do it with cross browser support (current versions) and just use CSS. This is a progressive enhancement approach which just falls back to color versions on older browsers: