First, make sure all your network cards are gig-e. This is not mandatory for QoS, but why gimp your access to your home file server (you do have one of those right).
Next, get a decent QoS capable smart switch like this: http://www.dlink.com/products/?sec=2&pid=324
Now build a dedicated computer with multiple network cards and linux OS for use as firewall/QoS manager.
Then install Shorewall firewall configuration and QoS tools.
Finally, set up the firewall however you prefer and setup "tcrules" similar to this:

Code:
# Shorewall version 4 - Tcrules File
# For information about entries in this file, type "man shorewall-tcrules"
# See http://shorewall.net/traffic_shaping.htm for additional information.
# For usage in selecting among multiple ISPs, see
# http://shorewall.net/MultiISP.html
# See http://shorewall.net/PacketMarking.html for a detailed description of
# the Netfilter/Shorewall packet marking mechanism.
###############################################################################
#MARK   SOURCE          DEST            PROTO   DEST    SOURCE  USER    TEST    LENGTH  TOS   CONNBYTES         HELPER
#                                               PORT(S) PORT(S)

# Any service that should run better than a torrent
6       0.0.0.0/0       0.0.0.0/0       tcp     21,80,110,443,8080
6       0.0.0.0/0       0.0.0.0/0       tcp     -       21,80,110,443,8080

# My desktop (I have priority for bandwidth over anyone else in the house, it's good to be the king ;-)
5       10.0.0.120      0.0.0.0/0
5       0.0.0.0/0       10.0.0.120

# Medium speed rules (remote access/desktop and dns server)
4       0.0.0.0/0       0.0.0.0/0       tcp     22,53,5900,5901,3389
4       0.0.0.0/0       0.0.0.0/0       tcp     -       22,53,5900,5901,3389
4       $FW             0.0.0.0/0       tcp     53

# Gaming rules (wow)
3       0.0.0.0/0       0.0.0.0/0       tcp     3724

# High speed rules (services provided by the firewall itself to the outside world)
2       $FW             0.0.0.0/0       tcp

# VoIP rules (highest priority to prevent breakups in calls)
1       $FW             0.0.0.0/0       udp
1       0.0.0.0/0       0.0.0.0/0       udp     5060

# IMCP request/response rules to let the pings all fly through ASAP, so we get accurate results even when the connection is being used heavily
1       0.0.0.0/0       0.0.0.0/0       icmp    echo-request
1       0.0.0.0/0       0.0.0.0/0       icmp    echo-reply

#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
If you use WoW voice chat or ventrilo you can add rules for them in group 1 or 2.

Also, if you have no idea what i'm talking about, stop messing with your computer settings and go back to playing the game already.