Because customers know about June and consequently no one is dumb enough to buy an iPhone in May. They stop buying and start waiting.
You would be surprised how few people keep in the know about iphone release dates, i shouldn't think it makes the slightest dent in projected sales.
The 3GS was a minor update. And the next phone is supposed to be a little more updatey. So if a shiny new model is good to go, why wait a full year?
Why wait a year?!? lol
A year is a tiny amount of time to expect a full product revision, and apple is trying to keep on top of it. If they do finish 'early' then i would imagine they would want to spend the rest of the time testing and developing.
Apple expect the 3Gs (and every model) to sell over a certain time period, and would expect a certain amount of profit from it... so bringing in a new product before the premium sales life is over will cost them money, bring advertising costs into an earlier 1/4, and mean they are expect to bring the next iphone out even sooner.