1. А как у Вас шаблоны связаны с БД(базой данных)?
2. Стадия загрузки идет после стадии формирования html на сервере средствами php и modx. Соответственно именно там и надо вставить логику для выбора шаблона. Если это связанно с юзером, то можно хранить в сессии.
3. Обычно, когда говорят "подменить шаблон на лету" имеют в виду замену в браузере. Например пользователь нажал кнопку "красная тема", сменилась тема, но это делается заменой css файла, средствами javascript
4. Очень туманно сформулировано, добавьте конкретики.