I use CallStation from http://www.imptec.com/
. I spent $40 on it a good 3 or 4 years ago and continue to receive updates. It's really easy to use, with a ton of options, including most of the ones you mentioned wanting.
If you have a modem with caller id (such as the Intel modem that comes with Dell computers) then it will announce the caller's name with the text-to-speech engine, show a popup (three settings available: big window, small window, or tray balloon.. the windows are skinnable, the tray balloon is best when you're playing games). You can record greetings or use the text-to-speech engine, with custom greetings and call handling by group, by individual phone numbers, and/or whether the number is available or not (blocked or out of area). So for example if the caller id info is blocked you can have it play a special message, and even just hang up on them if you want. You can also do things like set one-time personalized greetings so that if, for example, you're expecting a call from someone but have to run to the store, you can set a greeting that will play for only that person just once, then go back to normal.
I have it set on a schedule so that after my bedtime it will automatically start picking up right away and play a second greeting saying that we're sleeping now, and it won't make any external sound so that people leaving messages won't wake us up, and then goes back to normal in the morning.. the time it does this is also different on the weekends. I also have it set NOT to do this if our employers call, but they are the only exception.
It will also automatically detect fax calls and receive faxes, has a phone book (which it will use to display and announce the caller's info, overriding what the actual caller id says and allows multiple phone numbers per person), a phone dialer, "Do Not Disturb" mode, call monitoring, speakerphone, can send the caller id info over the network to another computer (or to all computers on the network, of course a client app is required but unfortunately won't let you listen to messages over the network), automatically page you or send an email when a call or message is received (it can also attach the soundfile of the message they left), and so on.
If you don't want all that then you can just use the voicemail, which is displayed like a list of email with the name, number, date, time, and comments from the phone book (if available), then you just double-click on the message to play it.
Of all the software I've used over the years, this has been, by far, my favorite and the one I get the most continual use from. I don't think I could go back to a regular answering machine anymore. It works well and is fairly straight forward to use.