Desafortunadamente IE y otros navegadores no reconocen el pseudo-elemento :hover en ninguna otra cosa que no sea un link <a>.
Así que lo mas cercano a eso, es lo siguiente...
Mete en cada celda un elemento <a>, y luego a ese elemento dale la característica de display:block para que ocupe todo el espacio de la celda. Incluso puedes especificar un height...
Sobre ese elemento, puedes hacer ya tu :hover, :visited y demás para conseguir tu efecto sin javascript, sin hacks ( a menos que meter el <a> se considere uno [?]), y compatible con la mayoría de los browsers.