Чек http://jsfiddle.net/XRYLk/3/
Я добавил mouseleave, поэтому, если мышь была над ним при первом запуске функции, она установит таймер на mouseleave.
JQuery:
$("button").click(function() {
$("div").slideToggle("slow");
});
setTimeout(hidepanel, 4000);
function hidepanel(){
if($('div').is(':hover') === false){ $('div').slideToggle(); }
}
$('div').mouseleave(function(){ setTimeout(hidepanel, 4000); });