Если у Вас не работает, еще не значит, что это не правильно. Возможно что-то Вы делаете не правильно или это какая-то особенность браузера. Раз уж мы задаем для тега <img> способ отображения block, то и родительский контейнер должен быть блочного типа. А так же необходимо указать размеры.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<style type="text/css">
a:link, a:visited {
display: block;
}
a:link img, a:visited img {
display: none;
}
a:hover, a:hover img {
display: block;
width: 90px;
height: 90px;
}
</style>
</head>
<body>
<div>
<a href="http://localhost/">
<img src="some-image.ext" alt="" />
link
</a>
</div>
</body>
</html>
А еще лучше будет сделать это изображение фоновым рисунком ссылки, чтобы вообще не использовать тег <img>