Одно простое решение, которое приходит на ум, - это не загружать изображение сразу, а затем использовать javascript в document.ready или window.onload, чтобы получить изображение. Затем, если статус 404, поместите свой собственный noImageAvailable.png в изображение. Если вы получили 200 или другой статус OK, поместите полученное изображение туда. Однако с этим есть проблема.
Политика одного и того же происхождения не разрешает сценариям получать доступ к содержимому между доменами. Таким образом, вы не сможете просто использовать javascript для получения этого файла. Для этого есть пара обходных путей, один из которых я объясню здесь (не обязательно лучший, просто вариант).
Преимущество этого метода в том, что javascript может просто запросить файл и отобразить результат. Недостатком является более внутренний код. Просто сделайте запрос javascript на изображение с вашего сервера (AJAX) и вставьте результат в img. На стороне сервера для этого запроса откройте сокет TCP для сервера, на котором размещен образ (вам нужно будет разрешить IP-адрес), и отправьте HTTP-запрос GET для образа. Если изображение возвращается нормально, отправьте его в ответ на AJAX. Если нет, отправьте свой собственный noImageAvailable.png обратно.
Поскольку это может занять некоторое время, вы можете сначала заменить изображение на изображение загрузки по умолчанию, пока не вернется AJAX.
Учебник по AJAX
Информация протокола HTTP
Я бы добавил кое-что о программировании сокетов для вас, но я не знаю, какой бэкэнд вы используете.