Выполнение этого с таймаутом не будет работать надежно. Важной частью связанного ответа является установка флага, о котором знает ваш обработчик. Смотрите обновленный вопрос для кода.
Кроме того, можно привязать временный обработчик к событию, которое отвечает за восстановление вашего обработчика:
function updateState(state, handler) {
var win = $(window);
function temporaryHandler() {
win.unbind('hashchange', temporaryHandler);
win.bind('hashchange', handler);
};
win.unbind('hashchange', handler);
win.bind('hashchange', temporaryHandler);
$.bbq.pushState(state);
}