Unless you preload them, images have the same problem as video, at least a 700ms delay on most cellular.
What you could do is have an image sprite acting as a film reel, similar to what google does for their animated doodles. You basically put your entire animation in one long image, place it as a background, and then using JavaScript advance the background position every frame. For example, if you had a 3s 200x100 image you wanted to advance every 100ms, you could do:
<div class="thumb" style="background-image: url(vid1.png); width:200px; height:100px" data-frames="30">
</div>
$('.thumb').bind('click', function() {
var $img = $(this);
var startTime = Date.now();
var frames = $img.attr('data-frames');
var width = $img.width();
setInterval(function() {
var frame = Math.round((Date.now() - startTime) / 100) % frames;
$img.css('background-position', -frame * width + 'px 0';
}, 100);
});
Update
Because you're just using an image here, you are no longer bound by format. Your best option could be to re-encode the filmstrip as a 60% or 85% JPG, dramatically reducing the file size. Since you're animating, quality becomes less of a factor.
Update 2
I meant to include frame skipping for cases where timeouts aren't perfect.