I can recommend Thinking Rock. Its an Java desktop application and has every GTD feature I need.
But the big problem is that there is no real smartphone support, only syncing over wifi with connection to a Thinking Rock instance.
I'm trying to use toodledo currently but I'm missing support for projects. :/
I also tried nirvanahq which is great but lacks the very important feature of repeat a task from completion date.