Аякс в аяксе в аяксе, какое решение выбрать?
Никакой портянки не будет. Будет одна функция и один колбэк, отличаться будет только параметры current_step и token, или как там вы их назовете, по которым на бэкенде будет определяться, какую часть формы отдать.
И это хорошая практика. Поддерживается также легко.
P.S. Грузить форму сразу или нет, зависит от ее размера и сложности. Если форма большая и сложная, и состояние промежуточных этапов зависит от предыдущих, надо разбивать.
Это вполне нормальный алгоритм. 
Можешь грузить сразу всю форму. А показывать только один шаг и менять их, сделать клиент валидацию (если возможно) - тогда придется делать только один запрос - при окончательном сабмите формы.
Но если валидацию необходимо делать после каждого шага и без сервера она не возможна - то множества запросов не избежать, и. имхо, это вполне нормально.
Поищи плагины для jQuery или своего фреймворка - наверняка их с десяток найдется.