Should I use a freelancer? If so, where is the best with least amount of headache and competitive price? What are the steps I need to do?
Before hiring someone you would do yourself a big favor by running through some early low-fidelity prototyping. Start by sketching it out on stickynotes, get the flow down and get into the experience. You can move to a high-fidelity clickable prototype after a few iterations, possibly hiring a graphic designer to simply lay it out for you. Load this prototype on your iphone and show it off to real life possible customers for feedback. Listen and iterate. Now you may find that people don't care or you have a set of features (typically a few of them winning) that you can take into development. This becomes your specification and you can more easily find a programmer on oDesk or such. My advice is to do this work yourself or work very closely with a firm that specializes in this process. Good luck!
You could try an online search like http://www.appbooker.com/, or look around your local area if you would prefer to interact with the app developer and designer in person.
In order to create a Mobile App, you will want to hire a developer (the fellow who writes all the code) and a designer (the fellow who makes the UI/ icon/ aesthetics of the app).
Communication is very important between you and the developer/ designer. Make up your mind about what you want the app to do, don't present a half baked idea to the developer and expect him to fill in the gaps. Even if you aren't a programmer, do some research into the capabilities of smartphones so that you don't try to hire someone to do something impossible (or at least needlessly difficult).
Regarding pricing, you are probably looking at a few thousand dollars (minimum) for a very, very simple app. $5,000 - $10,000 for a more complex app and if your idea is a mobile game, then you might need to break your piggy bank, I read Angry Birds cost ~$140,000 to make.
I am an Android developer with connections to designers and iOS developers, feel free to give me a call if you have any other questions.
Take a look at this video to get started in the right direction. Lots to figure out before code hits screen: