Как сделать появление всплывающего меню с задержкой при наведении?
Как только на кнопку наведен курсор через setTimeout запускаем отсчет до появления меню, если курсор уведен с кнопки, то отменяем таймаут через clearTimeout.var timesArray = [];

$('.menu').hover(
    function()
    {
        var id = jQuery.data(this);
        timesArray[id] = setTimeout(function() {
            //Показываем меню
            $(this).css({'display' :  'block'});
            timesArray[id] = "";
        }, 500);
    },
    function()
    {
        var id = jQuery.data(this);
        //Скрываем меню
        $(this).css({'display' :  'none'});
        if (timesArray[id])
        {
            clearTimeout(timesArray[id]);
        }
    }
);
Попробуйте.
Может быть кому-то будет актуально сейчасvar hoverTimeout;
$('.categoryNavMenu > li.item').hover(
    function () {
        var _this = $(this);

        hoverTimeout = setTimeout(function () {
            _this.addClass('hover');
            _this.find("ul:first").addClass('hover');
        }, 500);
    },
    function () {
        //Скрываем меню
        $(this).removeClass('hover');
        $(this).find("ul:first").removeClass('hover');

        clearTimeout(hoverTimeout);
    }
);