I replaced my home landline with an Asterisk box running on a Supermicro Atom D510 mboard, specifically PBX in a flash, which is the Cliffs' notes version of FreePBX. FreePBX is based on Asterisk, but provides a spiffy web interface for configuration that's more advanced and free-er than the others. That said, you'll still need to be comfortable at the command line on Linux and a text editor such as vi.
With Asterisk, you can do voicemail, have your voicemail emailed to you, have multiple boxes, pay $1.50 per month for a phone number plus $.01/minute for calls with a SIP provider such as Vitelity. You can have conference calls (you'll need to pay $10/channel for g729 if you want to scale at all on home bandwidth, though.)
You can have ring groups, different extensions, etc. I have one for emergency late-night network issues, which only those with the secret extension can access to wake me up.
There's an unlimited number of stupid tricks you can do, but you'll need to learn the difference between trunks, routes, and dial plans. That said, it's pretty cool. But then you'll want to buy Aastra SIP phones, which come with open-source phone applications, so it will cost you more. If you want to light up your in-house phone lines, it's $200 for an FXS card. If you want to use an existing landline as a trunk, it's $200 for an FXO card. (Double check which is which before you buy because I can never remember which is which.)
The best part about running your own PBX is that (1) you can send telemarketers to voicemail hell and (2) it's trivial to fake callerID, which helps with (1).
Top Ten Things Overheard At The ANSI C Draft Committee Meetings: (7) Well, it's an excellent idea, but it would make the compilers too hard to write.