Before I get into the details I though of, maybe there's a simple fix. How are your machines connecting to each other? In other words, are you sure they're BOTH connecting locally? I've seen situations where computers were actually going out through the Internet to connect to each other across the room. Very carefully check those connection settings...
100BaseT is rated at a maximum of 100 "megabits" per second, whereas most of us like to deal with "megabytes," a unit eight times as large. Divide 100Mbps by 8 and you get 12.5MBps (megabytes). Now consider overhead-that's the data used to manage the connection. If everything is perfect, you could take a 5-7% hit for overhead, while poor connections, cable that's been flexed once too often, or no-longer-great connectors could give you much more of a hit. Your approximately 7MBps isn't bad, but it isn't great either.
I'd review the simple stuff first. Are all your cables in great condition, and are all of the connectors also in good condition? Are all the cables plugged in firmly and do they all latch in properly?
Also, just because your cards are reporting 100Mbps connections through the router doesn't mean that they're sending efficiently. Are both cards set for full duplex operation? Using half duplex can slow things down quite a bit, because the receiving side has to wait for a break to send acknowledgements; full duplex allows each packet to be acknowledged almost immediately, and retransmissions can happen much sooner.
Finally, packet size can be a problem. If one computer's network settings allow large packets, but the other only allows smaller packets, it can generate a lot of retransmissions in one direction-sending smaller packets goes fine, but large ones get fragmented and have to be resent. This setting is called the MTU or Maximum Transmission Unit. It can also be a problem with communicating through the Internet, so your router's MTU setting may need attention as well. In general, if you're using a cable modem, your MTU-throughout your network-should be 1500, while with DSL it should be 1492 (an extra 8 bytes of overhead are used by DSL.