Acabei de fazer exatamente isso em um projeto. O lado HTML parecia um pouco com isso:
<a href="[fullsize]" class="gallerypic" title="">
<img src="[thumbnail pic]" height="90" width="140" alt="[Gallery Photo]" class="pic" />
<span class="zoom-icon">
<img src="/images/misc/zoom.gif" width="32" height="32" alt="Zoom">
</span>
</a>
Então, usando CSS:
a.gallerypic{
width:140px;
text-decoration:none;
position:relative;
display:block;
border:1px solid #666;
padding:3px;
margin-right:5px;
float:left;
}
a.gallerypic span.zoom-icon{
visibility:hidden;
position:absolute;
left:40%;
top:35%;
filter:alpha(opacity=50);
-moz-opacity:0.5;
-khtml-opacity: 0.5;
opacity: 0.5;
}
a.gallerypic:hover span.zoom-icon{
visibility:visible;
}
Deixei grande parte da amostra no CSS para que você possa ver como eu decidi fazer o estilo. Note que diminui a opacidade para que você possa ver através da lupa.
Espero que isto ajude.
EDIT: Para esclarecer o seu exemplo - você poderia ignorar visibility:hidden;
e matar a :hover
execução, se quisesse, foi assim que eu fiz.