Who is going to do the development/coding?
This is always the first hurdle. You want to create an app or someone has given you the task of creating an app. Typically, there are two options - make it internally with your own development resources or hire a third party development shop. The challenges that arise in both cases are turning business requirements into technical requirements and the time and monetary cost involved.
If you decide to make the app with your internal development team, you'll have to decide to take them off the projects they're already working on or you'll have to hire more developers, which can be expensive. In either case, you'll need iOS developers and Android developers. The plus side to using an internal team is communication; you can have white-boarding sessions, meetings, and you can follow the development process that you already have. The downside is usually a lack of mobile best practice standards for designing the app and its user experience - especially for both iOS and Android operating systems. It's one thing to have talented developers, it's another thing to have mobile experts to match up business needs with good user experience.
If you decide to outsource to an app development shop, there are many challenges, starting with the selection of a vendor, which is a lengthy process in itself. You'll also have the challenge of communicating requirements clearly to the shop.