Hello,
Ça se découvre assez facilement avec Firebug ou un outil équivalent.
En gros tu as un élément avec une image ou image de fond (pas vérifié), et devant un DIV avec background-color:white;opacity:0. Lorsque ce DIV est survolé, son opacité passe à 0.2 (20%). En quelque sorte c'est un «calque» blanc qui passe de 0% à 20% d'opacité de manière progressive.
La modification progressive de l'opacité est faite en JavaScript ici. En CSS3 ça peut aussi se faire avec les transitions CSS (Webkit depuis un bail, Firefox dans la future version 4, Opera je sais plus, et pour IE il faudrait voir s'ils ont annoncé ça pour la version 9).
La plupart des bibliothèques JS proposent des fonctions pour «animer» des propriétés CSS. C'est à dire que la fonction va s'exécuter toutes les N millisecondes pour modifier la valeur de element.style.opacity, par exemple. Les performances de ce genre d'effets peuvent être problématiques, surtout sur des petites configurations, donc à utiliser avec parcimonie. (Ça vaut aussi pour pas mal d'effets natifs en CSS3, du moins pour les implémentations actuelles.)