It really depends on how big it is, and what you use it for.
If you're the sort of person who constantly installs and uninstalls programs, then weekly is probably about right. But if you hardly ever put anything new on it, then monthly is probably more realistic, when you consider the very slight performance gain vs the time it takes to defrag!
Note that if you run windows XP or some other OS with a decent file system (NTFS, HFS+ etc.) then you only have to defrag less... perhaps once every 6 weeks or so. If at all if your computer is set to defrag when idle (I believe XP home is set to do this by default).
First get rid of all the rubbish on your drive. Download CCleaner it is free. Get rid of unwanted programs too. Download jv16 power tools, if you are happy deleting dead entries in your registry (backup first)!
Now do a defrag.