That's true -- however, that can occur under normal circumstances anyway, depending on latency. TCP packets can arrive in a different order than they were sent, I believe.
If you wanted to have completely accurate (chronologically) messages, you'd be best off sending a timestamp with each message. But then again, the clients' clocks probably wouldn't be synchronized, so you'd have to use a reference time (say, the server) to do that. Of course, either of these schemes would be open to cracking -- modify the client a little, and you can have a message appear anywhere in the list.
You could fix half of the problem by only sending times from the server to the clients, I suppose.
TCP packets never arrive in a different order. UDP ones do!
Oh, well, what do I know. :)
Still, delays could cause packets from one client to arrive after those from another, even though the packets from the first client were sent first chronologically.
Then again . . . it's a chat program, right? Who cares! :) Display a ping-time-measurement if you want, and users can say "no, I really typed it before you -- my ping's 244!"
Yay for plausible deniability.