Try reencoding your videos with handbrake. Use a constant quality setting you find acceptable. I use 22 for 720p and 1080p. Then in the advanced tab add settings for vbv-maxrate and possibly vbv-bufsize. I find for my network setup both 720p and 1080p will play consistently with:
For 480P I use the settings:
The 480P settings are actually what I used to use with my NSLU2 which had much slower transfer, and wireless routing. I still use those settings because I find they work for about everything.
I find to play 1080P I really must encode with my settings. I could never get 1080P to work with wifi, but it usually works for my plugged networking. For 720P is a crap shoot. I usually try playing videos from other sources. If they don't play I then reencode with my standard settings.
The other thing that makes a huge difference is the protocol. I find I get best results streaming with lighttpd. Next best is SAMBA. NFS would seem like a good choice, bit I haven't had good luck with it. FTP is a lousy choice. While you might get good downloading rates with FTP, it is not a streaming protocol. So as soon has you hit rewind you start skipping backwards, you are likely to freeze or crash your client. I would also expect since FTP clients generally just request the whole file, that the error correction blocks would also cause skips and crashes. You want protocol where your client will request manageable block sizes. So even if one block freezes they can be requesting the next block in a different thread, and hopefully have all the data needed by the time your video player reaches that point in the buffer.
As most others have commented if you want more than 10 MB/s you probably need a dedicated NAS designed for that. But you don't need over 10MB/s to stream most videos at reasonable quality.