для блока меню: onouseout="setTimeout('some_func()', 2000)"
Через две секунды вызовется ф-ия some_func().
Рекомендую учесть тот факт, что, покинув пределы меню, пользователь может захотеть в него вернуться. Т.е. установленный таймаут нужно будет снять.
<script type="text/javascript>"
var menu_to = null;
var menu_div;
function menu_mouseout(menu)
{
  menu_div = menu;
  menu_to = window.setTimeout('menu_close()', 2000);
}
function menu_mouseover()
{
  if (menu_to)
  {
    window.clearTimeout(menu_to);
    menu_to = null;
  }
}
function menu_close()
{
    menu_div.style.dispaly = 'none';
}
</script>
<div id="menu" onmouseover="menu_mouseover()" onmouseout="menu_mouseout(this)">...</div>
Кроме того, пользователь может выйти из одного меню и, пока оно не закрылось, войти в другое. Т.е. надо проверять теущее и предыдущее: предыдущее надо закрыть принудительно, без задержки.