Write quick and dirty code, refactor, quick and dirty, refactor, quick and dirty, and so on and so forth.
I have found that by doing this not only do I overcome coder's block, but sometimes discover implementation details I didn't expect when planning/designing/estimating the problem. Furthermore, if the changes are small enough, you can rewrite the whole thing with a better, more rounded, solution.