By default, Mail will mark a message in a conversation read after a short delay. To adjust the short delay (for example, to remove it), use the following command (replacing 0 with the desired time in seconds):
defaults write com.apple.Mail MarkAsReadDelay 0
To revert to the default:
defaults delete com.apple.Mail MarkAsReadDelay
As far as I can tell, there isn't a way to affect the delay for single messages.
[crarko adds: Nice.]
Mac OS X Hints
http://hints.macworld.com/article.php?story=20120210155700943