di trucchetti per evitare il problema del preload nei css ce ne sono molti...


se il preload riguarda dei semplici tasti quello che ti consiglio è questo:

se ad esempio abbiamo un tasto di 160 x 25 pixels con un rollover, creiamo già una gif di 160 x 50px (il doppio in altezza)che contiene sopra l'immagine a riposo e sotto l'immagine "hover"

a questo punto nel livello si gioca con i valori del background-position, guarda quest'esempio, dove c'è un tasto del menu che si chiama "chisiamo"

.chisiamo a:link, .chisiamo a:visited, .chisiamo a:active
{
display: block;
text-decoration: none;
background: url(template_img/sxnav/chisiamo.jpg) no-repeat;
background-position: 0px 0px;
}
.chisiamo a:hover
{
display: block;
background-position: 0px -25px;
}

praticamente l'immagine chisiamo.jpg è alta 50px, al suo interno alle coordinate x 0 e y 0 c'è l'immagine a riposo, alle coordinate x 0 e y 25 c'è l'immagine hover.

nel css, in a:hover, non faccio altro che far "slittare" in alto, di 25 px, l'immagine, che è sempre la stessa.