I personally use Taskwarrior[1] for work (because I'm in the terminal all the time anyways), and aside from a couple of edge cases, it's the simplest and most effective thing I've found.
Our group uses a JIRA[2] instance that I've customized the heck out of to make an effective "This is what needs done, grab this if you have any spare time" system. The motto is "No ticky, no worky" - anybody doing anything work related generates a ticket for it. We've got shell aliases hooked into the web service, so anybody can just do a command like:
ja awesomeproject 'Finish work on the gonkulator' inprogress
For home and personal, I'm a fan of Any.do[3], it's a Chrome webapp and native Android app. The Chrome app lives in a button on the top bar for easy access, the Android app stays in the notification pane and shows what you should be doing next, and it has this feature called Moment where it runs you through your pending tasks once a day, and you mark them as done, to do today, or to do later. Great way to make sure you keep visibility on stuff. [1]: http://taskwarrior.org
[2]: http://www.atlassian.com/software/jira
[3]: http://any.do