1) вместо delay можно использовать setTimeout для задержки
и clearTimeout для прерывания ожидания
что то вроде
var waiter;
// fadeIn отработает и вызовет безымянную функцию
$('#div').fadeIn('fast', function(){
// создаём таймер и запоминаем ссылку на него
waiter=setTimeout(function(){
// когда таймер отработает будут запущен fadeOut
$('#div').fadeOut('fast');
},5000);
})
// пример остановки таймера
// щелчок по killer унечтожит таймер и обьект не исчезнет
$('#killer').click(function(){
clearTimeout(waiter);
});
2) для delay попробуй ещё связку из двух методов.
$("#div").clearQueue(); // унечтожаем очередь
$("#div").stop(); // останавливаем текущую анимацию