Can you increase the length of the sessions so they don't expire when the user closes thier browser? Set a session variable on the first time the image is loaded by the user. This way it doesn't matter if the image was requested multiple times. You only update the db when the variable isn't set.
From session_destroy:
In order to kill the session altogether, like to log the user out, the session id must also be unset. If a cookie is used to propagate the session id (default behavior), then the session cookie must be deleted. setcookie() may be used for that.
Does this code work?
setcookie("PHPSESSID", 'foo', time()-3600); /* expired 1 hour ago */
Another solution would be to serve the image through a PHP file, so whenever it gets requested, you can update your database and set a flag to your subscriber table that the newsletter was opened. Much cleaner solution IMHO. You would embed the image with code like this:
<img src="http://www.example.com/tracker.php?idhash=1234234"/>
where idhash could be a combination of subscriber ID plus newsletter ID.
Are you sure the image is requested because of the session cookie, and not simply because the E-Mail client for some reason doesn't do any caching?
How about conditionally changing the session cookie name with session_name() depending on the url that's requested?