Se os níveis já estiverem na ordem correta, pode fazer

da <- expand.grid(f1=gl(3,1,labels=c("pouco","razoavel","muito")),
                  f2=gl(4,1,labels=c("nunca","as vezes","regularmente","sempre")))
str(da)

db <- as.data.frame(
    sapply(da,
           function(x){
               if(is.factor(x)) as.factor(as.character(as.numeric(x)))
               else x
           }))
str(db)

À disposição.
Walmes.

==========================================================================
Walmes Marques Zeviani
LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W)
Departamento de Estatística - Universidade Federal do Paraná
fone: (+55) 41 3361 3573
VoIP: (3361 3600) 1053 1173
e-mail: walmes@ufpr.br
skype: walmeszeviani
twitter: @walmeszeviani
homepage: http://www.leg.ufpr.br/~walmes
linux user number: 531218
==========================================================================