I believe the key factors to successful information gathering are:
- Knowledge of the client's business: The project manager has to know how his client's business functions, the goals and the culture of his business, etc...
- A cooperative client: Cooperative clients make information gathering a breeze. By cooperative I mean responsive (for example, you send him an email and he replies immediately), available (you ask for a meeting and he's there before you), friendly (you feel at ease when discussing the project with him), and transparent (he's not afraid of telling you everything you want to know about his business, as long as it relates to the project).
- A proactive project manager: You need to be proactive, you need to ask the right questions yourself to unveil the real requirements of the client, don't leave any stone unturned. Don't wait for the client to tell you about this business, go there and understand his business.