So far I've been happiest with Git Extensions.
Pros:
- Fairly complete access to git commands
- Doesn't hide git specifics like the index (unlike Tortoise)
- Good branch visualization
- Visual Studio integration in addition to standalone GUI or shell integration
- Actively developed
Cons:
- UI is rough around the edges in looks and usability.