Basically, you should be able to take constructive criticism and not defend your work based on anything other than objective correctness. You shouldn't get upset with someone who says "your code sucks," you should ask them "why?"
It can't be checked into source control until it's been reviewed.
There are lots of benefits:
We all have to write readable code.
We can't just put in hacks.
You learn stuff. When reviewing others code you can ask why they did something in a certain way. Sometimes you'll learn about the benefit of coding in a certain way, or using a certain method / style / whatever.
This also has the benefit of redundancy. It means at least two developers know an area of the codebase. So if they're away there are no bottle necks, the other developer can also code that area.