A key part of this is that you should start with the MVP[1]. Get the (minimal) features together that make your app work and release it.
Then follow a user-centred design (UCD) process by testing it on real people! Iterate early. I'd be more than happy to discuss what I mean here if anyone requires clarification. Most people end up following a UCD process without realising it, and it tends to be the way that the most successful products (physical and digital) tend to be created.
[1] MVP: Minimum Viable Product http://en.wikipedia.org/wiki/Minimum_viable_product