For me I think the reason I can't do a thorough job on my own code is down to a combination of two reasons:
1) Testing my own code is boring. I keep thinking about what it should do and then taking shortcuts where I don't test every possible circumstance because I believe I can infer what will happen in one case from another.
2) Testing my own code is time I'm not spending working on the next bit of code in my queue. At a certain point I start feeling like I should just be working on the next thing