I've had a D-Link DNS-321 for about two years, and I'm quite happy with it. It comes empty, with space for two drives, so you can easily get 2TB into it. I have 2 1TB drives in a RAID configuration for safety, because it's where I keep all my photos and that kind of irreplaceable stuff.
Its primary purpose was media storage, but I've had a heck of a time getting the whole system (including client-side) working the way I want. I only just recently got it right.
I started off using XBMC on an old XBox and a Netbook, but neither could quite handle H264 video at full framerate. My XBox died, which spurred me to replacing my DVR with a new DirecTV HR-24, but it turns out that this device can only do UPnP, not read from SMB. I tried using TVersity (running on my domain controller) to transcode and serve the media, but this didn't work very well, as TVersity has all kinds of compatibility problems.
My eventual solution was to replace both clients with dedicated hardware devices. I chose the Prodigi PD-100N
because it's the only such device I could find that can read from SMB. This is now working wonderfully. It can play any kind of media I can throw at it (JPG photos; MP3 audio; H264 and DivX video, etc.) at full 1080p.