write it down
It's a pretty obvious one but with a lot of tasks in the past I just thought "ahh well I'll remember it". But most of the time I delayed it or missed to do it. This is especially the case when you get some great ideas while lying in bed. The chances are high you have forgotten all about them the next day. So get yourself some kind of easy accessible persistance layer to write down your tasks. Could be a simple piece of paper, could be your cellphone or could be some kind of web-application syncing with your smartphone (An overview of the best mobile todo list managers can be found here).
split tasks into enjoyable sizes
Have you ever written down a task that sounded something like "clean the house"? If you did, when did you check off that task? Exactly, never. If you instead split the tasks in something like "clean the living room", "take out the garbage", "do the laundry" you'll find it not only easier to complete all those single tasks, you will also be able to stretch these tasks over a longer period of time. That's what you have to do anyway when you have to complete one big task. Plus the satisfaction of checking off a task on your list multiplies with the number of single tasks.
separate current tasks from future tasks
When you follow the last instruction you might end up with a lot of tasks to complete. Unfortunately no one wants to spend time scanning his/her todo list for the right tasks to execute. But you can most likely distinguish between tasks that have to be performed in near future and tasks that need to be done at some point in the future. You should keep those two categories separate for several reasons. First: because a list with a small amount of tasks is easier to get to and second: it keeps you focused on what's important right now.
In practice you can easily achieve such a separation by simply dividing your tasks in let's say 'current tasks' and 'future tasks'. Just make two lists. You can check your current tasks several times a day and your future tasks maybe once a day. Once you have the feeling a future task might get more important you can just move it to the current tasks.
express tasks in imperative form
It's already in the name. 'To do list' implies that you deal with a list of orders. However I have seen several to do list that contain tasks like "Has Mike already answered my email?". That is not a task, it's a question. The answer to this question is almost all the time "I don't know" because the actual task would be to get the answer. This phenomenon often stems from status meetings when people are asked questions like "Have you already heard from Mike regarding...". Instead of writing down an actual task, they just copy the question to their notebook. For easy tasks this may work, but when the questions get mor complex they can be really annoying to interpret, especially if read a few days later. Just take the time and write something down like "Check if Mike already answered my mail and call him if not". It doesn't need much practice and over time it will most likely help you with the execution of your tasks.
These are some of the basic techniques I use when I need to get something done. You could easily sum these 4 points up in a single word: "prepare". This preparation pays out most of the time. In fact I believe that almost all the points I mention show up somewhere in famous productivity concepts. The "next action" principle from GTD also tells you something like "dividing tasks into single actions" which is kinda like "split tasks in enjoyable sizes". The "Tickler File" - aka 43 Folders - presents a system of keeping track of current and future tasks. So these concepts aren't that new, but still it helps to know that they exist and actually help.