First off, 3 dumb switches that are daisy chained is just a bad bad bad setup. You are asking for trouble and lots and lots of packet collisions.
Having a central managed switch is FAR better solution and I highly recommend it. Never daisy chain anything but routers that are configured for just that (by way of static routes and such) or you'll just have problems when transferring large files across the network.
Most networks are fine with 10/100 solutions. If need be, you can spend the money on a large gigabit switch, but they can be pricey. If you just need to pull and push files off of one computer from all the others, get a switch that has a gigabit port and run the server off the gigabit port with a gigabit network adapter, the rest of the machines only need to be 10/100 from the switch (this is a far cheaper solution if you are just in need of a file server).
You should have:
Modem(most likely in bridged mode) ---> Router(all dhcp/nat should be done here) ---> Switch(managed or unmanaged, but managed is best) ---> computers and access points (no dhcp/NAT on these access points)
When choosing a switch, choose one with enough ports to handle the number of computers you will have connected.
Note that if you are planning on having a performance network, going with brands such as dlink, linksys, netgear, airlink and so on will probably not suffice. They work well for a basic home solution, but they are not by any means performance product lines. Look to brands like cisco, sonicwall, samsung, edgewater, netopia and adtran for higher grade routing solutions.
Also note: when you are testing your download and upload speeds, you'll only get accurate results if you are testing on the same network the speed test is on, so test from your ISPs website as it is probably located side by side with the DNS servers and will provide the best results.
I had a look at that speed test program you used. It does not appear to be suitable for testing the connection speed between two computers on a LAN, unless one is running a webserver (in which case it would be a specific HTTP test). I recommend you use iperf instead, which is the standard tool for this. – paradroid – 2010-09-12T14:03:12.087