Step 1: Set up iCal
You can make any iCal Event send an alarm when it's come due. Click on "Alarm" in the Event's Info Window and select "Open File". Then, select "Other...". Navigate to a compiled AppleScript or AppleScript application (yes, compiled scripts work!) and select it. Then set the time you want the alarm to go off relative to the start time of the Event (minutes, hours, days before or after the Event is scheduled to start). I set this to "0 minutes before".
This Event will fire "My Script1" at the "from" time of the Event

Step 2: Control iTunes
We'll build a little app here. The simplest thing you can do is to tell iTunes to play. Even better, to tell iTunes to play a particular playlist or radio stream. To play any playlist, use the following script substituting "Recently Played" with the name of the playlist you want to play:
tell application "iTunes"
play playlist "Recently Played"
end tell
[upm] click to open in Script Editor
To make sure that when you wake up you see the actual playlist, add the second line, which selects the playlist in the Source column:
tell application "iTunes"
play playlist "Recently Played"
set view to current playlist
end tell
[upm] click to open in Script Editor
Purely optional. Now, save that in Script Editor as an either "compiled" or as "application" and assign it as an alarm to an Event in iCal (read more about the differences between "compiled" and "application" AppleScripts).
Almost forgot! If you want a really good shuffle:
tell application "iTunes"
repeat 5 times
set shuffle to false
set shuffle to true
end repeat
play playlist "Recently Played"
end tell
[upm] click to open in Script Editor
To play streams, copy your favorite streams into their own playlist (avoid storing streams in the main library where they get in the way; this script helps with that). Mine are in "Radio Faves". To play a particular stream, just call it by name:
tell application "iTunes"
play track "Adult Pirate Radio" of playlist "Radio Faves"
end tell
[upm] click to open in Script Editor
Step 3: Volume Up and Down
Great. You can select something to play before you wake up in the morning. Now how about creating a dandy fade-up routine. First, you should know that AppleScript can set iTunes main volume from 0 to 100, off to loudest. What I do is set iTunes volume where I want it tomorrow morning. When this script is fired by iCal, it will kill the volume, start a playlist playing, and then gradually raise the volume to where I set it.
property tick : 5 -- raise volume level by this many each loop
property thismany : 0 -- seconds to wait before making next increment to volume
tell application "iTunes"
set snd to sound volume
set sound volume to 0
play playlist "Recently Played" -- your playlist here
repeat
if (get sound volume) is greater than or equal to (snd - tick) then
set sound volume to snd
exit repeat
end if
set sound volume to (sound volume + tick)
delay thismany
end repeat
end tell
[upm] click to open in Script Editor
At the end of the day, when you want iTunes to fade out and stop, schedule this:
property tick : 5 -- change volume level by this many each loop
property thismany : 1 -- seconds to wait before making next change to volume
tell application "iTunes"
repeat
set snd to sound volume
if snd is less than or equal to tick then
set sound volume to 0
exit repeat
end if
set sound volume to (snd - tick)
delay thismany
end repeat
stop
end tell
[upm] click to open in Script Editor
By changing the thismany and tick values, you can change the duration and dynamic of the fade. A smaller tick number will raise/lower volume in smaller increments; changing thismany changes the delay between the next change in volume. Play around with it for best results.
There are probably better ways of doing the slow fade; it's just a matter of figuring the mathematical dynamics.
These are just some simple ideas to get you started. Have fun! Don't over sleep!