Mah, vallo a capire. In effetti E' CERTO che MouseLeave funge se entri, AGISCI sul mouse e lasci... se ci passi sopra alla velocità della luce, magari l' evento non è fatto per gestire queste velocità.

Se proprio vuoi intestardirti col giochino dei colori potresti:

-All' evento MouseEnter lanciare un veloce timer di controllo, settato su pochi centesimi di secondo
-Controllare ciò che sta sotto al mouse in qualche modo, tipo tramite WindowFromPoint()
-Se ciò che sta sotto al mouse NON E' l' icona... cambia colore e stoppa il timer, che ovviamente va stoppato se MouseLeave viene recepito.

Se la montagna non va a Maometto...