Я не эксперт по javascript, но я думаю:
Вызов document.getElementById("loading")
не ограничен xmlhttp.readyState==4
.
Вызывается для всех состояний готовности от 0 до 4. Если строка
document.getElementById("ins").innerHTML = xmlhttp.responseText;
вносит значительные изменения в страницу (возможно, «убирает» элемент «загрузка»), следующий
document.getElementById("loading").style.display = "block";
приводит к ошибке.