I'm pretty sure that neither of your ideas (using `weights` or multiple instances of $x_h$) will work correctly. My understanding of the help page for `predict.lm` is that you need to use `pred.var` and set it equal to $MSE/m$. The reasoning is that `pred.var` is used to set the variance of future observations; by default it is assumed to be the same as in the data ($\sigma^2$, estimated by $MSE$). By pretending it is $\sigma^2/m$ (estimated as $MSE/m$), you are using the variance of the average of $m$ predictions and will get the correct result.