Hola pez. Hombre ¿nada que ver, nada que ver...? No sé yo...
Evidentemente la opción de JavierB (

) es válida pero de alguna manera el ocultar y mostrar capas te permite colocarlas donde quieras sin el inconveniente de que ocupen espacio y desplacen a otros objetos. Podrías tener todas las imágenes que quisieras unas encima de otras y de distintos tamaños y mostrar la que corresponda cada vez.
Además, la primera FAQ que te recomendé (106) hace precisamente lo que quieres, sólo que en lugar de pasar por encima de una imagen para cambiar otra pasa por encima de un texto. No hay más que cambiar el evento onMouseOver del texto a la imagen.
Para más datos, en el enlace que has puesto de ejemplo, te viene el código que utilizan para hacer esos cambios, que no es más que el SwapImage de Dreamweaver. Te bastaría con estudiar un poco la página para adapatarlos a tu necesidad.
Aquí te dejo parte de ese código:
Código:
function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
function MM_findObj(n, d) { //v4.0
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && document.getElementById) x=document.getElementById(n); return x;
}
function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
Un saludo.