Have you tried to use the timeseries scikits ? It provides some convenient way to plot the kind of data you have, and ticks are automatically adjusted depending on the level of zoom.
You can download the sources by SVN:
svn co http://svn.scipy.org/svn/scikits/trunk/timeseries timeseries
In this case, I want to avoid another dependency,
but more generally, I really need to explore this scikit.
Right now I am just doing
ax1.set_xticks([dt.date(y,1,1) for y in range(1985,2011,5)])
which works pretty good but has hard coded dates...