Here is some code that will do what I think you want.
Monthly labels are very mashed on top of each other, so I did quarterly instead. But I left in the code (commented out) for monthly.
% Make up the days
d1 = datenum('jan-1-2009');
d2 = datenum('dec-31-2010');
dailyDates = d1:d2;
% Identify where the ticks are
% Use this instead for quarterly date ticks
dayVec = ones(1,8);
monthVec = [1,4,7,10,1,4,7,10];
yearVec = [2009*ones(1,4),2010*ones(1,4)];
tickLocations = datenum(yearVec,monthVec,dayVec);
% % Use this instead for monthly date ticks
% dayVec = ones(1,24);
% monthVec = [1:12,1:12];
% yearVec = [2009*ones(1,12),2010*ones(1,12)];
%
% tickLocations = datenum(yearVec,monthVec,dayVec);
% Make up the data
xvec = randn(1,numel(dailyDates));
% Plot the data (with specified tick labels)
figure
plot(dailyDates,xvec)
axis tight
set(gca,'XTick',tickLocations)
datetick('x','mmm-yy','keepticks','keeplimits')
