Важно понять специфику работы setTimeout и document.write.
document.write добавляет в документ текст, будет вставлен после закрывающего </script> в текущем блоке скрипта:
<script type="text/javascript">
document.write("[docwrite]");
</script>
<script type="text/javascript">
alert(document.body.innerHTML);
</script>
Ну если документ уже закрыт (т.е., считывание его кода завершено), он откроет новый, пустой, и запишет туда.
setTimeout не останавливает работу скрипта. Эта функция лишь говорит браузеру запустить что-то, по возможности, через столько-то времени.
Код
for (i = 1; i < 4; i++) {
setTimeout('document.write(".")', 1000)
}
на самом деле запустит все три функции приблизительно через секунду.
Получить нечто похожее на желаемый результат у Вас получится только если setTimeout сработает раньше, чем завершится обработка тега <script>, т.е., фактически почти никогда и в зависимости от фазы Луны.
(Если точнее, то в Firefox с задержкой выполнения скрипта модальным окном.)
Используйте заместо этого изменение innerHTML у элемента:
<script type="text/javascript">
document.write("Загрузка");
for (var i = 1; i < 4; i++){
setTimeout(function(){document.body.innerHTML += "."}, i * 1000)
}
</script>