i found some packet sniffer programms with sources:
http://www.prism.gatech.edu/~gte477n/languages/csharp/
http://www.codeproject.com/csharp/pacanal.asp
i know you didnt want a packet sniffer but the reason for them is easy, if you can sniff the packets then you just get the bytecount of each packet which is sent or recieved and so you can determine the speed..
but i am also looking for other possibilities, but didnt found that much, that is just an idea which came in my mind :)