The quality of your network cards, switches, and cabling can all have an effect. It might be worth searching for reviews of the NICs and switch(es) you are using to see if other people report them as not performing too well. I'm tol that built-into-the-mothboard NICs are worse of Gbit transfers, though in my experience this doesn't seem to make much, if any, difference in my environment.
As a point of reference, I've just install a new Gbit switches in our office (replacing old 100Mbit switches) and large SMB transfers run at close to (but less than) 30Mbyte/sec between each combination of machines I tested. I've just done a quick test with netcat between two of the machines and got similar results so I don't think that SMB is the bottleneck. The two machines I just tested do have two switches between them which may have an effect, but I guess that effect is minimal given how close the figures where to an SMB transfer to a machine on the same switch.
The best transfer rate I've seen over a Gbit network was a little shy of 50Mbyte/sec at its fastest. This was while transferring a drive image from one machine to a file on the other (for the purposes of converting to a VMWare virtual drive. In that case the two machines were connected via a short cross-over cable rather then via a switch. Coincidently one of the machines in question was one of the machines I've just tested and got ~29Mbyte/sec from - the most likely culprit for the main bottleneck in my case is probably the 8 year old wiring in the building that may have been done on the cheap! A quick (and equally unscientific) test on my little home network sees transfer rates more like 35Mbyte/sec copy a file from a Samba share to a Windows box and 25Mbyte/sec in the other direction (I'm not sure why there is a discrepancy there as in both cases the copy was manages by teracopy on the Windows box - I might have to investigate that further at some later time).
Jumbo frames are going to make a difference for bulk transfers, so I suggest you give that a try if all your kit supports them properly.
To cut a long story short: going by my anecdotal experience your 20Mbyte/sec is a bit slow, but not massively so. All my Windows and Samba installs are pretty much completely untuned, so I suspect that your hardware/wiring are the difference between what I see and what you see.