How should I demonstrate a functional iOS application to a client? I hope this is the right place to ask this question, since it isn't actually programming related.

I work at a company which is taking the first steps in iOS development, and we realised that there is a problem on how to demonstrate a fully functional developed application to a client. 

The situation is quite simple: 

Let us say some company (referred as "client") asks us to develop an application about whatever. The client can be geographically distant or even in another country. The client owns its set of iPhones/iPads and at end of development, it would like to run the app on their phones, so they can see it works and is fully functional.

So, the question is how to do it? How to make an app demonstration to this client on their iPhones?

We haven't done this before, but we realised that there is no other way to install an app from any source apart from the Store, or compiling it from a developer Xcode environment. I mean legally. We also understand that it takes quite a lot of time to deploy an application to the Apple Store, in order for Apple to check it out and other stuff.

Please, correct me if I said something wrong, but we are in the baby steps of this, and we would like to understand a bit more about all these issues. 

So, are there any technical solutions to this problem? I mean, which do not involve sending phones by mail, and anything like that.
Yes, there is a way to install apps on stock OS iOS devices, other than from Apple's App store or when tethered directly to the developers Mac.

An enrolled iOS Developer can sign an app with an Ad Hoc Distribution certificate and a mobileprovision file which includes the UDID's of the client's devices.  You can email this app and provision file to a client.  Then the client can install this app (and the mobileprovision files required for it to operate) using the iTunes app on their Mac or PC.  Or the client can download direct to their device from a (OTA) web page using HTTPS plus a manifest plist.

This is very commonly done for beta testing of iOS apps.

Ad Hoc provisioning expires at least once per year, so these apps are only temporarily useable.  A Developer is limited to no more than 100 UDIDs max total per year, so can only do this for a very limited number of clients.