You were on the right track...
The way you have it, the timestamp will contain the time of 00:00:00 so this will give only the date chosen. (between 2012-02-22 00:00:00 and 2012-02-22 11:59:59)
Code:
SELECT userid, username, COUNT(*) as count FROM post
WHERE visible=1 AND
UNIX_TIMESTAMP('2012-02-22') >= dateline AND
UNIX_TIMESTAMP('2012-02-23') < dateline
GROUP BY userid ORDER BY count DESC