I'm curious about some things; for example, user is never defined, and index is hardly fifty in length... I suppose that this is merely a representation of the problem. Regardless: I think it will work better if you remove the else statement.
Actually, I wonder what you are trying to do. Why do you compute an index each time, instead of storing it in the class, for example. What is the purpose of this code. It is a good thing you isolated your problem in a simple sketch, but apparently it was too isolated...
and of course, add a PImage field to your MessageClass and to its constructor. Thus, you can get the image from the messageInstance1 instead of picking it from a separate array by computing some index in a convoluted way. Alternatively, you can also store i in the MessageClass to determine its index / id, or just use the i index in the loop in draw(), etc. Storing the image in the class is probably the best way (unless, perhaps, two instances of the class can use the same image, but even then they can share the image).
I remain sketchy on purpose (and because of lack of time), but if you need more details, just ask.