Видимо так:
$(…).submit(function() {
…
var form = this;
$.post(
url,
{
…
},
function(data) {
if (…) {
…
} else {
form.submit();
}
}
);
return false;
});
Отправку данных по submit'у формы придется отменять всегда, т.к. post-запрос выполнится асинхронно, для этого делаем retun false непосредственно в обработчике submit. После того, как придет ответ от сервера, в зависимости от условия, отправим форму самостоятельно с помощью form.submit().