I have a VS2005/C#/.NET 2.0 application in which i'm hosting a web browser control. I would like to offer a "record" and "playback" functionality for web page activity. Meaning- Say a user wants to record a certain sequence of actions like (just a raw example):

1) navigating into a certain web page
2) entering credential information
3) setting two radio buttons on that page
4) clicking login
5) [navigates to another page]
6) selecting a checkbox
7) clicking a button
8) [navigates to the final page]

when the user hits "record", I'd like to record these actions as the user browses and I'd also like to be able to play them back automatically when the user chooses to. I just want to make sure you understand: This is not some kind of hidden 'spy' application - the user chooses to do this while using my own special browser so there are no covert intentions whatsoever.

My question: how should I go about this. Trapping mouse and keyboard inputs and playing them back? comparing the HTML document from after initial loading, to pre-navigation to see what changed? how do I apply something like that back automatically? any help with direction would be greatly appreciated.

This sounds very much like Coded UI

So it might be worth checking that out first. Otherwise, I'd recommend that you decide on what possible actions you can have. Examples might include "EnterURL", "Click Hyperlink", "Submit Form Details" etc.
Then whenever a user did something on your built in control, you could capture that action (with the enum) and provide some data. So in the case of "EnterURL" you would record the hyper link.

The action of recording would probably need to be done as it happened, which should be able to be picked up in your host (Fire an event).

i have added menu items with name Start, Stop and Replay which would on clicking these items would record the video and play it back to the user.

I do not want to use any free tool to record this video, is there any other option possible ?