xkè la regola:
codice:
img.transparent a{
    opacity:0.4;
    filter:alpha(opacity=40);
}
da te definita, stà ad indicare che il tag <a> contenuto nel tag <img> con classe transparent, abbia una trasparenza del canale alpha pari a 0.4.
Ma tu non puoi avere un tag <a> interno al tag <img>....
per rendere l'effetto totalmente css-based dovresti usare la pseudoclasse :hover direttamente sul tag img:
codice:
img.transparent {
    opacity:0.4;
    filter:alpha(opacity=40);}
img.transparent:hover {
    opacity:1.0;
    filter:alpha(opacity=100);}
xò IE 6 e precedenti nn lo riconoscerebbero.
Una soluzione possibile, anche se non elegante è invertire quello che volevi fare tu, cioè mettere l'imagine all'interno di un link (tag a) e poi impostare la modifica della trasparenza sulla pseudoclasse :hover del tag a, che è pienamente supportata da IE 6.
Praticamente cosi:
codice:
[img]...[/img]
// css
a.transparent img{
    opacity:0.4;
    filter:alpha(opacity=40);
}
a.transparent :hover img{ 
    opacity:1.0;
    filter:alpha(opacity=100);
}