So, with the help and suggestions of many hints and forum postings on macosxhints (thanks to everyone who inspired this!), I wrote a set of scripts that do just what I want. Whenever new mail comes in, it gets passed to the main script by a mail rule. The script then turns down iTunes if it's running, so you can hear the announcement -- it turns the iTunes volume back up when it's done. If you tell it to in the preferences, the script will also scan all the senders to see if they are in the Address Book, and use the nickname or the phonetic name (in that order) instead of the sender text. So if the mail sender neglects to put their full name in the mail (e.g. just "joe@mail.com"), their name will still be read correctly if they're in your Address Book.
It will strip out "Re:" and "Fwd:" in front of subjects and say "Reply from..." or "Forward from..." instead. You can also add mailing list names and pronounciations using an auxiliary script. For example, any mail with subject "[JumbledListserv] Check this out!" will be read as "New Jumble mail about 'Check this out!' from...". There are also auxiliary scripts to remove mailing list names and set the prefs.
The first step is to download the scripts [47KB] (macosxhints mirror).
Put the four unzipped scripts directly in your ~/Library/Scripts/Mail Scripts folder. Now make a new rule: Have the SayMailThreaded___ctl-z script activate for any new message. The Set Speak Mail Prefs script obviously sets the prefs. To add a new mailing list to be announced, select a message from the mailing list and run Add Mailing List, (or hit Control-G), and to remove a group, do Remove Mailing Lists (or Control-R). You can run the speaking script on any selected messages to see how it sounds as well -- just choose it from the Mail scripts menu, or hit Control-Z.
Important: You can change the name of any of the scripts (e.g. to change the shortcut key) except the first one, SpeakMailThreaded, since all four of the scripts refer to that name. If you change the SpeakMailThreaded script's name, you'll have to edit all the scripts to update to the new name.
Let me know what you think of them, and any major bugs. I know it sometimes hangs if Mail hangs waiting for a password or something, but I haven't figured out a way around that yet. I might add the ability to grab speech from some high-quality web site voices, such as naturalvoices.att.com, but I haven't gotten that to be reliable enough yet.
[robg adds: These scripts worked as described for me; the automatic muting of iTunes is a very nice touch. I'm not sure I'll use these constantly (I use a visual mail indicator instead), but they do work, and show some of the capabilities of Mail and AppleScript...]

