I presented two sessions at Dreamforce last year on the development and release workflow we've built at the Salesforce Foundation for our own development projects. We've released all the code (build scripts, automation scripts, etc) as open source with the intention of building a community of Salesforce developers facing similar challenges.
The best overview available is the video of the sessions themselves. The first is an overview of the whole process and the second is a more hands on demo of wrapping the process around an existing project in GitHub:
The challenge in using GitHub for Salesforce development is connecting the two. I'd argue that the most important thing to get right from the beginning is good build scripts that can automate the different types of deployments you'll need to do from GitHub to a Salesforce org.
You didn't specify if you are building managed packages or not so I'll give the caveat that our process is currently designed for use in managed package development.
As for your question about handling dependencies on other packages, that is something our process was built to handle. We have a single file in the root of the repository that specifies the namespace and version of each required packages. The build scripts use this file to automatically install the correct version of the packages as part of the build: