What is the best process for code review when using GIT? We have an external GIT provider (Unfuddle) and have caps on resource usage - so we can't have dedicated remote repositories for every dev.

Current process:

* We have a GIT server with a `master` branch to which everyone commits
* Devs work off the local `master` mirror or a local feature branch
* Devs push to server's `master` branch
* Devs request code review on last commit

Problem:

* Any bug in code review are already in master by the time it's caught.
* Worse, usually someone has burnt a few hours trying to figure out what happened...

So, we would like 

* To do code review BEFORE delivery into the 'master'.
* Have a process that works with a global team (no *over the shoulder* reviews!)
* something that doesn't require an individual dev to be at his desk/machine to be powered up so someone else can remote in (remove human dependency, devs go home at different timezones)

We use TortoiseGIT for a visual representation of a list of files changed, diff'ing files etc. Some of us drop into a GIT shell when the GUI isn't enough, but ideally we'd like the workflow to be simple and GUI based (I want the tool to lift any burden, not my devs).