How should I manage per-user bandwidth?
Solution 1:
I use the QoS of Tomato firmware on my LinkSys WRT54GL router. It can detect all types of traffic, p2p, video, audio, etc and classify it, giving it bandwidth restrictions and packet priority. I believe you can actually set it per IP Address as well. There is also great bandwidth monitoring by day/week/month.
You could also try DD-WRT as it's very similar, but I really prefer Tomato's UI.
There are some other 3rd party firmwares, but I have only used these two.