guarda che io ho usato visibility:hidden; perchè nel tag a NON ho usato display:block; per ottenere l'effetto preciso il codice esatto dovrebbe essere:
<span>testo link</span>
a.nav {background-image:url(off.gif);background-repeat:no-repeat;}
a.nav:hover {background-image:url(on.gif);}
a.nav span {visibility:hidden;margin-left:4px;}
usando la mia soluzione risulta + facile realizzare una barra di navigazione orizzontale mentre con la tua risulta + facile farla in verticale