Как отследить завершение всех ajax запросов на странице?
Да, конечно, можно смотреть на значение внешнего счетчика с определенным интервалом...
Но можно сразу сделать нормально:var form = {foo: 'bar'},
    requests = [],
    index,
    $xhr;

for (var index = 0; index <= 5; index++) {
    $xhr = $.post('myurl', {'form': form, 'index': index});

    $xhr.done(function (data) {
        console.log('request done');
    });

    requests.push($xhr);
}

$.when.apply($, requests).done(function () {
    console.log('all done');
})
P.S. Как сделать так, чтобы функция выполнялась только после того, как другая завершится?
Ну как вариант сделать счетчик, и при вызове запроса прибавлять его, а при окончании или ошибке вычитать. При нуле все запросы закончатся.