Вы могли бы рассмотреть буферизацию вывода.
Пример:
Сначала выведите:
<div id="loading"><img src="{loading-img}" /></div>
Затем оставьте буфер вывода и отправьте его, когда будете готовы, в браузер, сбросив его.
Когда этот вывод отображается в браузере, вы можете использовать встроенный стиль, чтобы скрыть предыдущий HTML-блок.
Пример во втором выводе.
<style>
div#loading { display:none; }
</style>
{REST_OF_HTML_TO_BE_RENDERED}