Чтобы не делать два изображения - одно цветное другое черно-белое. Можно воспользоваться средствами CSS.

Сделаем, чтобы при наведении на картинку в ссылке цветное изображение менялось на черно-белое. Для этого в css файл добавим такой код:

a:hover img{
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-ms-filter: grayscale(100%);
-o-filter: grayscale(100%);
filter: grayscale(100%);
filter: url(grayscale.svg#greyscale); /* Firefox 4+ */
filter: gray; /* IE 6-9 */
}

В тойже папке, где находится файл css c этим кодом, создадим файл grayscale.svg с таким содержанием

<svg version="1.1" xmlns="http://www.w3.org/2000/svg">
<filter id="greyscale">
<feColorMatrix type="matrix" values="0.3333 0.3333 0.3333 0 0
0.3333 0.3333 0.3333 0 0
0.3333 0.3333 0.3333 0 0
0 0 0 1 0"/>
</filter>
</svg>

Это нужно для Firefox, иначе при наведении мышки на картинку, картинка исчезнет. Картинка исчезает очень ненадолго при первом наведении мышки, думаю, потому что нужно какое-то время чтобы этот файл закачался.

Поэтому можно добавить однопиксельную прозрачную картинку и сразу применить к ней фильтр.

Зададим для этой однопиксельной картинки класс blank, и добавим, соответственный, css код:

.blank{
    filter: url(grayscale.svg#greyscale); /* Firefox 4+ */
}