az if ág fut le (különben nem azt írná ki), de valami miatt nem jut érvényre a fadeout. ennek több oka is lehet: vagy a már lefutott, de késleltetett kód, vagy valami visibility jellemző.
setTimeout ügyében
a lényeg:
indítás:
var t = setTimeout(function(){...},1000);
törlés:
clearTimeout(t);
ha nem törlöd, lefut a function(){} 1 másodperc múlva
Nálad az indítást és megállítást az else és if ágakra lehet tenni (persze a definiálatlan t értéket kezelni kell)