Does cross validation not work for a multiple linear regression model? library(DAAG)
mod <- lm(Sepal.Width ~ Sepal.Length + Petal.Width, data = iris)
cv.lm(mod, data = iris, m = 10)

Warning message:
In cv.lm(mod, data = iris, m = 10) : 

 As there is >1 explanatory variable, cross-validation
 predicted values for a fold are not a linear function
 of corresponding overall predicted values.  Lines that
 are shown for the different folds are approximate

In my model I have a continuous outcome and 2 continuous covariates. Using the cv.lm function, I ran into an error...so does cross validation not work for multiple linear regression?
 A: Cross validation definitely works for multiple linear regression, so no worries there.  
If you look carefully at your output, you'll see that your function call threw a warning and not an error, which is an important distinction. The former will cause the function to break and, if you had assigned cv.lm to an object, that object would be NULL. 
In this case, however, I assume that you got output, despite the warning. And, if you had assigned the cv.lm call to an object, the object would be a valid member of whatever class it creates. 
I have never used cv.lm, but it appears that the warning you've observed is telling you that there is an issue with the generated plot. Apparently, with only a single predictor, the cross-validated predicted values for a fold are a linear function of the overall predicted values. Thus, in the line plot, it seems that the line plots are exact. 
With more than 1 predictor, the cross-validated predicted values are not a linear function of the overall predicted values. Thus, the lines in the plot are just approximate. 
If you look at the lm.cv source code, you'll see that the warning you received is associated with the plotit argument in the lm.cv function, which further confirms that this warning indicates an issue with the plot and not with the actual cv process.  
if (plotit) {
    oldpar <- par(mar = par()$mar - c(1, 0, 2, 0))
    on.exit(par(oldpar))
    coltypes <- palette()[c(2, 3, 6, 1, 4:5, 7)]
    if (m > 7) 
        coltypes <- c(coltypes, rainbow(m - 7))
    ltypes <- 1:m
    ptypes <- 2:(m + 1)
    par(lwd = 2)
    if (stline) 
        xlab <- xnam
    else {
        xlab <- "Predicted (fit to all data)"
        cat("\n")
        warning(paste("\n\n As there is >1 explanatory variable, cross-validation\n", 
            "predicted values for a fold are not a linear function\n", 
            "of corresponding overall predicted values.  Lines that\n", 
            "are shown for the different folds are approximate\n"))
    } 

If you use:
plotit=FALSE

you will not see the warning. 
If you are going to be using cv with any regularity, I would strongly suggest looking into the caret package. If serves as a wrapper for a huge number of models and streamlines cross validation and every other stage of model development. 
