You could use mapply
for this:
new.levels <- c('a', 'b', 'c')
replace.fun <- function(f, nl) `levels<-`(f, rep(nl, length(f)))
mapply(replace.fun, l, new.levels, SIMPLIFY=FALSE)
$A
[1] a a a a a a a a a a
Levels: a
$B
[1] b b b b b b b b b b
Levels: b
$C
[1] c c c c c c c c c c
Levels: c