Here is a script I put together. Copy and paste this into Script Editor, then set up the appropriate event handlers in iChat:
---
using terms from application "iChat"
on buddy became available theBuddy
set appName to "iChat"
set whoDidIt to full name of theBuddy
set didWhat to "is available."
set buddyIcon to image of theBuddy
set the allNotificationsList to ¬
{"Buddy became available", "Buddy went offline", "Buddy went idle", "Buddy went away", "Message received"}
set the defaultNotificationsList to ¬
{"Buddy became available", "Buddy went offline", "Buddy went idle", "Buddy went away"}
tell application "GrowlHelperApp"
register as application appName all notifications allNotificationsList default notifications defaultNotificationsList icon of application appName
notify with name "Buddy became available" title whoDidIt application name appName description "is available" image buddyIcon
end tell
end buddy became available
on buddy became unavailable theBuddy
set appName to "iChat"
set whoDidIt to full name of theBuddy
set didWhat to "went offline."
set buddyIcon to image of theBuddy
set the allNotificationsList to ¬
{"Buddy became available", "Buddy went offline", "Buddy went idle", "Buddy went away", "Message received"}
set the defaultNotificationsList to ¬
{"Buddy became available", "Buddy went offline", "Buddy went idle", "Buddy went away"}
if status of theBuddy is equal to offline then
tell application "GrowlHelperApp"
register as application appName all notifications allNotificationsList default notifications defaultNotificationsList icon of application appName
notify with name "Buddy went offline" title whoDidIt application name appName description "went offline" image buddyIcon
end tell
else if status of theBuddy is equal to idle then
tell application "GrowlHelperApp"
notify with name "Buddy went idle" title whoDidIt application name appName description "is idle" image buddyIcon
end tell
else if status of theBuddy is equal to away then
tell application "GrowlHelperApp"
notify with name "Buddy went away" title whoDidIt application name appName description "is away" image buddyIcon
end tell
end if
end buddy became unavailable
on message received message from theBuddy for textChat
set appName to "iChat"
set whoDidIt to full name of theBuddy
set buddyIcon to image of theBuddy
set the allNotificationsList to ¬
{"Buddy became available", "Buddy went offline", "Buddy went idle", "Buddy went away", "Message received"}
set the defaultNotificationsList to ¬
{"Buddy became available", "Buddy went offline", "Buddy went idle", "Buddy went away"}
tell application "GrowlHelperApp"
register as application appName all notifications allNotificationsList default notifications defaultNotificationsList icon of application appName
notify with name "Message received" title whoDidIt application name appName description message image buddyIcon
end tell
end message received
end using terms from