Just read an excellent blog post on The Myth of Software Estimation. The author claims that the relationship between humans and computers is just as unpredictable as a relationship between humans. I agree (nice analogy B.T.W.).
Ayende has a similar post about the fact that You can't estimate a month. I agree. My opinion is that you can plan your activities for one week at most (and even then for this short period of time its sometimes very hard). That's why I'm very much into one week iterations. Composing a sprint backlog for one week is a somewhat realistic thing to do, while composing for one for one month is not.
The subject of estimating software development is intriguing (at least it is to me). We can't seem to get this aspect of our job under control. There's some excellent literature available that covers this topic that I haven't got the chance to read (yet):
Maybe this is something we need to consider when talking about becoming better developers?