Reserve an IP for your roomie's machine. If he's got multiple ethernet ports, reserve one for each of his MAC addresses. Put them in a range outside of where the rest of your machines are and make them sequential.
Now go to advanced
click QOS engine
Make sure it's enabled
in the rules section:
Name - whatever
Priority - 200
Local IP range - roomie's first IP - roomie's last ip
remote IP range - leave these alone
Port range - 0 to 65535
Protocol - any
Save settings, restart router when prompted
Presto. Your roomie's traffic is now just about the lowest thing on the totem pole.
Comcast customer with speedboost? Disable the automatic uplink checking and manually specify your maximum uplink.
Alternative: take sledgehammer to roomie's computer next time he hogs all the bandwidth. Worked wonders on my teenager.