I use PyGTD
A couple months ago I was looking for a way to start organizing all the tasks on my mental to-do list. I read about GTD [Getting Things Done] and decided it made sense. I then decided I wanted some software to aid me in this advanced listmaking/self organizing ideal. I went through many programs, many of which already noted here, and came to the conclusion they were all hard to manipulate and generally Bloated software.
I stumbled upon PyGTD. I originally thought it would be too difficult to use, but I am now in love. PyGTD is a python script that organizes a to-do list based upon entries you put into different categories. For each entry, you use a code to put in urgency and importance, due dates, and even how often you want a task to recur.
Example of something you would put into a category file:
* Morning Review
C=0 I=5 U=4 T=1H D=2004-11-08 S=0D R=2004-11-01+1W ID=1
1. Review upcoming tasks and appointments
2. Clear your head
C is for percent of completion, I is for importance, U is for urgency, T is for estimated amount of time it'll take you to complete, D is the date you want this to pop up, R is the recurrance. ID is generated by the script.
This isn't even really a program in the way you may normal think of them. You edit text files and run a python script to generate a new text file based on the priorities you state (even which categories you want to work with at the time).
This concept may take some getting used to. Read the site and the couple pages of documentation, and you, like me, may like what you find.