A ver, primero que nada, ¿probaste lo que te recomendé?
Tal vez no me entendiste. Para ser mas claros, lo que propongo es que en la función opop, en lugar de llamar incondicionalmente a clop, cheques si el elemento actual "elem" es diferente al elemento anterior "elmant". Si son diferentes, pues ya llamas a clop. De hecho, lo ideal sería que si son iguales (o sea, el evento se disparó dos veces seguidas en el mismo elemento) entonces regrese la función, de preferencia false, pero con un return sería suficiente, así no se ejecuta código innecesario.
Ahora bien, otro refinamiento, que también comenté en mi post anterior, es que cambies el onmouseover a la imagen en sí. Entonces... en la funcion opop, para conseguir el div, tendrías que llamar al metodo getParent() del elemento original (que es la etiqueta img). Entonces, al sustituir el innerHTML con el span conteniendo una imagen (la cual ya no tendría el onmouseover), sólo se podría volver a invocar opop en caso de que el usuario pasara el mouse sobre alguna de las otras tres imágenes de las otras opciones.
Espero te sirva la explicación. No te rindas, eso de la compatibilidad entre navegadores es complicado. Por eso muchos usan frameworks ya mas probados. Pero me parece muy bien que hagas todo desde abajo, así se aprende muy bien, y es muy gratificante cuando se obtiene lo que uno quiere.