The only thing you need to do is to block the url
facebook.com/ajax/mercury/change_read_status.php
For Chrome, I created the extension FB unseen which blocks it, but you can use any adblocker to achieve this. Additionally, I added a "Mark as read" button, so instead of removing the feature completely, you can decide when the "Seen" flag should be set. Be aware that opening the "full conversation" page marks it as read, too, without using the change_read_status.php
script!
Edit: The thing about the "full conversation" site marking your conversation as read is not true anymore since facebook rolled out the new messenger. (Also, my button marking it as read is therefore not working anymore, too, working on a fix)