Wow, I'm drudging up quite the old thread. But I think I've got a solution (hack) to your problem and I wanted to share =D
code:
function OnEvent_ChatWndReceiveMessage (ChatWnd, Origin, Message, MsgKind){
if (Origin != Messenger.MyName){
Interop.Call ("user32", "SetForegroundWindow", ChatWnd.Handle);
}
}
I've tested it while watching a movie in fullscreen but not with Team Fortress 2 yet =P. The code is pretty straight forward, receive message set focus to that window. Tabs are actually windows of themselves to it'll switch to that tab. Based on experimental data, it will not overlap your fullscreen window.
Problems:
I don't know that it could detect that you are in fullscreen mode. You can probably implement an on/off button.
Receiving more than one message while in fullscreen mode will result in it flipping to the latest received message without identifying the other ones. There's probably a workaround you could write with a queue or something.