How would it tell the difference between a user opening the message and, say, a spam filter like SpamAssassin doing it?
Because a spam filter would probably not actually fetch the image. The only reason for a spam filter to fetch an image would be to OCR it and decide if it contained spammy text. I haven't heard of any spam filters that are that advanced.
The usual trick is to embed a 1x1 transparent image in the email with a URL that uniquely identifies the individual email. If the recipient opens the email with images enabled, his email client will request the image from the server, thus revealing that the recipient has viewed the email and from what IP address (giving a clue as to the recipient's location). If the recipient forwards the email, the image will again be fetched as each forwardee opens the email with image display enabled.
One refinement is to refuse to serve the image when requested and note how long it takes the TCP/IP connection to drop. This will give a clue as to how long the recipient viewed the email. If the recipient blows past the email, the connection will drop right away. But if the user lingers on the email, then the connection will remain open until it times out some time later.