Fairly hacky, but somewhat closer to what you seem to want:
library(ggplot2)
library(scales)
library(lubridate)
y=(1:12)
x=seq(as.Date("2014-01-01"), as.Date("2014-12-31"), by="months")
df=data.frame(x,y)
g<-ggplot(df,aes(x,y))
g<-g+geom_line()
labels <- date_format("%b")(x)
breaks <- as.Date(sort(c(as.POSIXct(x),
as.POSIXct(seq(as.Date("2014-01-15"),
as.Date("2014-12-31"), by="months")),
ymd("2015-1-1"))))
labels <- c("",
as.vector(rbind(labels,
rep("", length(labels)))))
g + scale_x_date(labels = labels, breaks = breaks, limits=range(breaks)) +
theme(axis.ticks.x=element_line(colour=c("black",
rep(c(NA, "black"), t=12))),
panel.grid.major.x=element_line(colour=c("white",
rep(c(NA, "white"), t=12))),
panel.grid.minor.x=element_blank())