I have somewhat solved my own question with the following:
SELECT * FROM (
SELECT * FROM (
(SELECT id, reciever, recieverid, message, datetime FROM messages WHERE sender = '$user')
UNION
(SELECT id, sender, senderid, message, datetime FROM messages WHERE reciever = '$user')
) as t
ORDER BY datetime DESC
) as t2
GROUP BY reciever ORDER BY datetime DESC
It seems to do the trick, although I don't know which messages are incoming or outgoing. I'll know if it works properly when I have a chance to invite some actual users.