To me the issue isn't development related ( though bad programming can sure turn things for the worst ), it's lacking the tactile response from a physical controller. When I play with on-screen controls, I am forced to look down the device every now and then, which is kinda bad if the game is fast paced and slick.
Yup, there's no getting away from that. Plus you've got the problem that your fingers obscure the play area.
To be successful the game really needs to accept the touch platform in some of the core design decisions. I attempt to do this by removing the number of inputs required. For example, in QB1-0 I made the decision to have the ship always thrusting and always firing, leaving the input to simple rotate + boost. It's a compromise, sure, but you can use it to your advantage - in this instance it makes the game more frantic and I pile on the bad guys to negate making it too easy.
For the platformer I'm writing it's more challenging - I'm trying to design the game around a simple left/right jump mechanic, which means I have to come up with the best ways to trigger events (e.g. bounce on buttons), kill bad guys (e.g. jump on them), etc. without requiring more input triggers.