Look at how facebook does it with their own app, called phabricator: http://phabricator.org/
They basically commit on a per issue basis, and for each issue, the code is shown, which is to be reviewed by someone. The code doesn't go into their main repository until the reviewer said it's ok to do so.
I guess it makes it more fun.
Also, perhaps a code should be assigned to two people: one who does it and one who reviews it.
Albeit perhaps your teammates don't believe in this review thingy.
Personally, in lack of reviewers, I used unit tests for lower-level functions and "the janitor test" for all the rest: the janitor test is called that way, because even the janitor should be able to understand your code.
I usually removed some minor parts, like block / function scope brackets, visibility notations, sometimes even types, and showed it to managers, domain experts, mates, whoever requested the code: "is this what you want?"
Also, going there personally and not leaving until reviewing is done helps.
Or, in case you're not fine with the team, or they're not fine with you, you know, "if you can' change the company, change company"...