Litmus released an email analytics service last month (may 2010).
See here: http://litmusapp.com/email-analytics
They boast a very cool \"read rate\" tracking: t
I think a nice way to track the time someone has the e-mail open is to simulate a very slow connection.
You can simply build a tracking handler which returns the tracking image byte by byte. After every byte flush the response and sleep for a period of time.
If you encounter a stream closed exception the client has closed the e-mail (deleted or changed to another e-mail who knows).
At the time of the exception you know how long the client 'read' the e-mail.
Hope this helps ;-)