It's a big question, and I don't feel that there is a single answer. But this is what I did...
I bought a Raspberry Pi, stuck XBMC on it, and am quite happy with it. However, what I did was wrong (at least, the approach was). However, I did it that way because I already had a Pi for other reasons, was playing with it, and I am a cheapskate that doesn't like buying hardware!
What you should do is decide what software you want to run, and your competency level of installing and maintaining it - and then buy the hardware to match.
I *really* wanted a simple DNLA Digital Media Renderer (DMR), rather than a DMC. Personally, I've never really liked GUI's, and wanted a simple backend just to play what was streamed to it. However, in the end, I could not find what I wanted, and developed an opinion that DNLA is a mish-mash of ideals that don't completely work in practice. So I gave up on that thread.
Had a brief encounter with the Apple TV. Didn't like it at all - not what I was looking for. The other retail consumer devices I had problems discovering that they wouldn't cope with all the potential formats I had, or wouldn't do what I wanted, or (more commonly) that I couldn't discover exactly what they were capable of anyway. I don't like locked-down platforms.
So I ended up with XBMC. It feels (to me) a bit bloated. Why would I need to view the weather on my TV? Or photographs? Etc... But the rest of the community seem to think that it isn't half bad, so that is good enough. But importantly, it works! I watch TV on a TV, not on the iPad (though the wife does) - and XBMC streams to it quite happily (so long as the format is correct - I've not bothered to look at streaming any .mkv files or transcoding options. And, if I feel the need, I can stream from the iPad to the TV (not that I do). Additionally, there is a very useful iPad/iPhone remote control app. It is my primary method of controlling it.
The annoyance (for me) is that I still need a keyboard plugged in to the Pi. It's not used much, and the plan is to ditch it completely, but I'm still tinkering with it. Also, I haven't got it to download TV schedules, or watch on-demand content from the web, or watch live broadcast TV, or act as a PVR, etc, etc. But that really isn't important to me. It may be for you...