Example use case.
I have image0.jpg, image1.jpg and image2.jpg in my folder, they are very big and take very long to load (10s for example). The first image that I open is image2.jpg, this is the last picture in the folder. I look at it for t > 10s. Now I want to see image1.jpg which is the one just before. Hitting previous loads the image, shows the progress bar and takes around 10s. Whereas ideally this one picture should have been cached before I hit the previous button.
Thinking about it you seem to have a linear array of names in your code, so if the index of current is i, you need to preload i-1 and i+1. My first message suggested to chose the preload order depending on the viewing direction, I think it is even easier than that now.
Basically you keep 3 images: previous, current, next.
If you move backward: next = current, current = previous, previous = Preload( current - 1 )
If you move forward: previous = current, current = next, next = Preload( next + 1 )
The only case when you need to preload both is when you open a picture for the first time without moving progressively, at this stage appart from being at the first or last image, the chance of right predictions are difficult so loading next first and previous after seems reasonable (although you could over engineer it with a user pattern usage analysis but really I am NOT asking for that 
 
Of course you will need to handle the edge cases, but hope that it makes it more clear. In short it should be even easier and quicker to implement and fix, especially when your code already seem to work on a similar pattern (except the weird handling of keeping the current one in cache) 
 
Hope this helps,
Cedrick