Думал над этим, что-то до конца реализацию не могу построить.
Я вот думаю так, есть 4 - и масива ->
-> читаем значение в первого селекта ->
-> выводим список для второго селекта ->
-> читаем что выбрано во втором, и что выбрано в первом ->
-> в зависимости от комбинации значений двух первых селектов, выводим третий....
- > ну и аналогично четвертый.
Где-то так, но что-то с реализацией проблематично