<img id="imagepreload" src="/путь/к/картинке" style="display:none;" />,
а после этого выбрасывает случайное число и выбирая случайное изображение помещает его в src этого элемента для предзагрузки.Ну он же все равно динамически формируется
Ну зацикливание можно обойти просто проверкой инфоблока
и отдельный обработчик на OnProductAdd?