Here is a solution:
##split idx object with respect to days
aa <- split.xts(x, f="days")
## get indices of days for which x2 == 0 less than 300 times
idx <- which(lapply(aa, function(xx){length(which(xx[,"x2"]==0))}) <= 300)
idx
[1] 2 3 4
##make one xts object containing only the desired days
new.x <- do.call(rbind, aa[idx])
dim(x)
[1] 5760 2
dim(new.x)
[1] 4320 2