Меня бы устроил такой вариант чекаута на одной странице. Взял на одном сайте и немного подправил под свое видение.
Если покупатель не авторизован на сайте, то ему сразу предлагать оформлять заказ как гостю. Для постоянных покупателей предусмотреть возможность войти под своим именем. Регистрацию предлагать уже после оформления заказа (сейчас есть такая опция). Таким образом мы избавим покупателя от мук выбора, как же оформить заказ, что сейчас происходит на первом этапе.
Выбор города сделать в одном поле. 21 век на дворе. Это уже обычное дело на многих сайтах.
Выбор способа доставки и способа оплаты - я считаю, что на десктопной версии хорошо идет выпадающий список, он и место экономит, а вот для мобильной версии надо делать другую адаптацию, не классический выпадающий список. Есть хорошие примеры у других сайтов.
Список возможных способов доставки привязать к выбранному городу. Можно даже сделать неактивным выбора способа доставки пока покупатель не выберет город. А если будет щелкать по этому неактивному полю, то уведомлять, что вначале нужно выбрать город, а затем будут предложены варианты доставки.
После выбора определенного способа доставки отображать дополнительные поля, которые необходимо заполнить для данного способа доставки. Для курьера - адрес доставки. Для пункта выдачи - предложить выбор пункта выдачи. Для самовывоза ничего дополнительно не запрашивать, ну может отобразить надпись с адресом точки самовывоза. Для Почты России - адрес доставки и индекс почтового отделения. Знаю, что некоторые способы доставки привязаны к индексу, рассчитывают стоимость доставки по индексу, но от этого надо отходить. Названия населенного пункта достаточно, чтобы посчитать стоимость доставки. eDost, к примеру, отлично считает доставку Почтой России и без индекса.
Если покупатель авторизованный, то заполнить данными из его профиля. Скрыть адрес электронной почты. И в идеале сразу выбрать способ доставки и способ оплаты, который был в последнем заказе этого покупателя.
Мне такой чекаут очень нравится. Если ничего подобного не появится, то закажу у кого-нибудь разработку.