A maneira mais simples de encontrar datas ausentes é usar uma tabela de calendário. Postei código para criar e preencher uma tabela de calendário para PostgreSQL ; você deve ser capaz de adaptá-lo sem nenhum problema.
Com a tabela de calendário no lugar, sua consulta é bastante simples e fácil de entender. Para encontrar as datas que faltam para outubro de 2011, você usaria algo nesse sentido. (Adivinhando em sua mesa de "posts".)
select c.cal_date
from calendar c
left join posts p on (c.cal_date = p.date)
where p.date is null
and c.cal_date between '2011-10-01' and '2011-10-31'
and p.userid = 1
order by c.cal_date