Вы связываете событие кнопки с ListBox, а не с элементом в ListBox, поэтому при нажатии вы получаете последний связанный.Вам нужно проверить, какой элемент выбран в вашем обработчике и открыть правильное изображение.
Что-то вроде:
from Tkinter import *
import os
from PIL import Image
root = Tk()
scrollbar = Scrollbar(root)
scrollbar.pack( side = RIGHT, fill=Y )
mylist = Listbox(root, font = "verdana 15", yscrollcommand = scrollbar.set, height= 5, width = 10 )
pathToImages = ['D://images/biscuit.jpeg',
'D://images/chocolate.jpeg','D://images/sandwich.jpeg',
'D://images/cake.jpeg']
def buttonHandler(self):
bi = Image.open(pathToImages[int(mylist.curselection()[0])])
bi.show()
a = mylist.insert(END,str('Biscuit'))
b = mylist.insert(END,str('Chocolate'))
c = mylist.insert(END,str('Sandwich'))
d = mylist.insert(END,str('Cake'))
mylist.bind('<<ListboxSelect>>', buttonHandler)
mylist.pack( )
scrollbar.config( command = mylist.yview )
mainloop()