With over 4,000 available modules, there's no way that anyone can know what each and every single module does. In my opinion, many developers often resort to writing custom modules too quickly without doing their due diligence in looking for an existing module to accomplish the same task.
When I'm working on a site that I think might require a custom module, there's a few steps I take before I break open my code editor (currently Espresso).
- Verify it's a module issue and not a theming issue. Many times I think I'm looking for a module, when all I really need is to change some output. Drupal's pre-process functions are incredibly useful - if you're not familiar with them, you should be.
- Verify that it's not something that CCK and/or Views can do already. Sounds silly, I know, but I've been guilty of this a few times.
- Check Drupal.org for a module by browsing via module page's "Projects" block. This breaks up the plethora of modules by category.
- Search Drupal.org for a module using its (greatly enhanced) search capabilities. Be sure to "Filter by type" = "project" on your first page of results.
- groups.drupal.org is a great resource for finding modules. Find a group that is related to your issue and post a request. Keep it short and sweet to get the best response.
- Ask for help. People are willing to help in the forums, on IRC, your local user group, Twitter. Take advantage of them.
If you do find a module that suits your needs, the time you'll have saved is money in your pocket!