Hi Don,
I think it's the fact that you're rewriting every URI to the html page in LB_FAILED. So the first request a user makes when the pool is down gets rewritten to index.html as you want it to. But then when the index.html page references images, the client requests those images and the URI again gets rewritten to index.html and the server responds with html instead of the images. The browser won't display the HTML as an image as the text content-type of the response isn't what it expects for an image.
I think an ideal solution would be to host the maintenance images on a different VIP and pool, so the LB_FAILED rule wouldn't trigger. Else, if you can't do that, you could potentially check the referer header value to see if it's the maintenance page and not rewrite the URI in that case. The downside to this is the clientside HTTP header info is probably not available in LB_FAILED. So you'd need to save the Referer header value for every request.
Aaron