So what I figured out which isn't ideal for large regressions is to simply build up a data frame that accumulates regression results and I can cut it up later.
out <- data.frame()
for(i in 2000:2012){
dtSub <- subset(dt, Year <= i)
fit <- lm(pctEarn ~ y2 + Company, data = dtSub)
fits[[i - 1999]] <- fit
dtSub$fitted <- fitted(fit)
dtSub$resid <- residuals(fit)
dtSub$reg <- i
out <- rbind(out, dtSub)
}