Any free (or cheap) programs that keep track of bandwidth usage for a home PC?
Be more specific. Are you trying to monitor your overall (total) usage or are you trying to monitor specific programs? Are you just trying to get a general sense how much you using or do you need numbers broken down by exact timeframes (by day, by hour, etc.)
At the simplest level Windows Task Manager can provide network utilization statistics if you setup the column display properly but that will only work if your Internet connection is also not used as your LAN connection otherwise your LAN traffic numbers will get mixed in with your Internet numbers.
I use a program called NetLimiter to allow me to manually limit the amount of bandwidth programs are taking (so I can, for example, download in the background and still play online games) and it also has some bandwidth usage tracking features and can track on an individual program basis though the version 1.3 that I'm using is somewhat limited in that regard. 2.0 supposedly has more features in that area but they were having stability issues with the betas and I haven't bothered to check out the release version since 1.3 is working fine for me. NetLimiter is also a commercial program which may not interest you.
Some cable/DSL modems and routers have traffic monitoring built-in that you can access through their admin interfaces.
A brief check through Goggle shows that there are other programs out there that will monitor your bandwidth though I don't know how good they are.