If you or your organization would like to develop new or enhanced functionality for CiviCRM, and has engineering resources to develop and help maintain the code, this page is for you. If your organization does not have engineering resources, but you're interested in sponsoring development, check out this page.
The general flow for contributing a new set of functionality is ...:
1. Post a description of the functionality on the CiviCRM forum. Include rationale (what problems does this solve, specific use cases, why you think this is generally useful for the wider community of users / developers). Clearly indicate your willingness / ability to follow through and implement the functionality if there's agreement on usefulness. This may lead to a more interactive discussion on IRC or Skype if needed.
2. Assuming that there is agreement by a core team member that your project is suitable for core, create detailed requirements documentation, and post it in the Currently active projects section of the wiki.
3. Write a blog post describing the project (problems you're solving) at a high level and link to wiki page - asking for feedback. Adjust requirements doc as needed based on relevant community and core team feedback.
4. Work with core team to determine how this project fits into release schedule, and post the implementation specifications as issues in the issue tracker. Actual code can be attached as patches to the issues, or potentially committed to an svn branch. You can read more about patches on wikipedia
Throughout the process, your developers can consult with core team folks as well as other experienced civi developers via IRC. We can also arrange some Skype chats if needed to consult on design or help folks get oriented. There is also the option of having the core team do the coding for a portion of a project if there is budget for that and it makes sense based on available resources / skillets. Our consulting rates and contract info is here.
If during this process you discover that the required functionality is to specific to your client / organization needs to be included in the core codebase, there are lots of options for extending CiviCRM to meet your needs.