I tend to add a lot of TODOs in my code; as Marco has pointed it out, these are features/additions/probable restructures; which either cannot be reasoned out at that point in time, or the ones which have not been factored in the initial time budget before something is to be shipped, or both!
I generally do find time to go back and do the corresponding additions, or refactors; or edit/remove those TODOs which are deemed unnecessary.
In a large scale project, especially when you are working in a team; it is inevitable for some TODOs to be left out; you can use git blame to contact the corresponding author to make the necessary changes, during a code cleanup session!