You are looking for na.locf
Generic function for replacing each NA with the most recent non-NA prior to it.
So in you example:
set.seed(1)
ddf <- data.frame('1m' = rnorm(25), '3m' = rnorm(25))
xxd <- xts(ddf, seq(as.Date('2013-07-27'), length.out = 25, by='day'))
xxd[sample(1:25, 8), ] <- NA
xxc <- na.locf(xxd)
xxc["2013-08-16/"] ## 19 to 17 are equal to 16
X1m X3m
2013-08-16 0.1437715 -0.7767766
2013-08-17 0.1437715 -0.7767766
2013-08-18 0.1437715 -0.7767766
2013-08-19 0.1437715 -0.7767766
2013-08-20 -0.7970895 0.5767188