a <- rep(c(TRUE,FALSE), 50)
qplot(a, data = data.frame(a = a), geom = 'bar', fill = a) +
scale_fill_discrete('', labels = c('t','f'))
or whatever you might prefer; so the question is more the default. One of the disadvantages of the other methods you listed is that in many cases it will widen the legend box and make the plot smaller. So the current default seems pretty reasonable to me.
On the other hand, you have a good point with the TRUE/FALSE labels, but I think True/False is probably a better default. I hadn't really noticed it before. :)
cheers
david.