Создаём набор нужных нам селектов, все селекты кроме первого - пустые.
Далее, после выбора первого селекта, отправляем AJAX-запрос на сервер, с данными о том, что пользователь выбрал в первом селекте. Далее, в зависимости от этого, возвращаем JSON-массив и заполняем им второй селект... и так по цепочке.
Если пользователь изменил выбор в первом селекте - очищаем второй, делаем повторный запрос и так далее, по кругу.