It's all thanks to a little utility by Bernhard Baehr called SleepWatcher, which runs in the background and is triggered by sleep and wake events, calling scripts to perform required actions. Download and install SleepWatcher and its StartupItem. Next, you're going to create ~/.sleep and ~/.wakeup files which SleepWatcher will call upon.
Pull up your favourite text editor and paste the following in: Save the file (name it sleep.txt and save it to the Desktop); make sure it's plain text! Then put the following in another file, called wakeup.txt, also saved to the Desktop: Next, launch Terminal (in Applications » Utilities) and type in the following:
$ mv Desktop/sleep.txt .sleep
$ chmod a+x .sleep
$ mv Desktop/wakeup.txt .wakeup
$ chmod a+x .wakeup
Now, whenever you sleep your machine, the external drives will be ejected automatically. When the machine wakes again, all connected external drives will be reconnected.
[robg adds: I haven't tested this one...]

