Want to spy on someone, eh? I dont recommend you do it, bro, spying is only for the shittiest people around. No offence to you, but thats the truth. If you cant trust a person, that doesnt mean you can go poking your nose into others affairs.
That said, here is the solution: (only for legitimate spying purposes

)
1. Google. You can find lots of keyloggers. I dont know about the antivirus, You'll have to trial and error here. But if you know to program, hook the keyboard and redirect it to a file as output. SetWindowsHookEx or even GetAsyncKeyState for an inefficient way to do it. Since its your own program, it wont be detected.
2. Google "desktop screenshot spy" That may help you. Same with programming, you can send a print screen key, and write the clipboard contents to a file. You can bypass that too, using IMessageFilter.PreFilterMessage Thats a useful one.
or else CreateDC for desktop and blitblt it onto a file.
3. You could just use the yahoo messenger archive. Enable it in your comp, and you can use a archive viewer program to view it later. There is a program called "Yahoo Messenger Archive Decoder". Or else google for "yahoo messenger recorder" For programming, one could try the messenger SDK released by yahoo. I dont have enough info on this.
Well, thats about it, Sorry if I posted programming references too, but that was for people with itchy fingers wanting to code frequently