Eduardo,

O grande gargalo com modelos de regressão não linear é o conhecimento que o usuário tem do modelo. Isso porque o usuário deve passar valores iniciais para o procedimento iterativo. Quando melhor são os valores maiores são as chances de sucesso. Isso você pode extrair de uma pesquisa semelhante a sua com dados de mesma natureza ou extrair essa informação do gráfico quando os parâmetros têm interpretação cartesiana.
Aqueles limites que você declarou do SAS, penso eu, que são limites para um procedimento brute-force que vai varrer dentro daqueles intervalos o melhor valor inicial para os parâmetros, que depois serão passados para otimização. Isso é comum é modelos com muitos parâmetros, primeiro faz se a busca num conjunto discreto de valores e depois os melhores valores são passados para o otimizador. No R você pode fazer isso com a função nls2::nls2(..., algorithm="brute-force"), e passar os melhores valos para a nls().
Para o caso de encontrar chutes iniciais, você pode usar os recursos gráficos interativos do R. O RStudio tem a função manipulate::manipulate(), o pacote gWidgetsRGtk2 também oferece formas de implementar e o playwith::playwith() também. O procedimento é plotar uma curva sobre os dados e mover os deslizadores que alteram valores dos parâmetros de forma da curva. Vai movendo até encontrar a melhor combinação e usá-la para passar para a nls(). Veja estes exemplos

http://ridiculas.wordpress.com/2011/04/09/metodo-grafico-interativo-para-valores-iniciais-em-regressao-nao-linear/
http://ridiculas.wordpress.com/2011/07/01/metodo-grafico-para-valores-iniciais-em-regressao-nao-linear-com-rstudio/

Aqui eu fiz um ajuste com dados simulados pelo modelo que você passou, com valores dos parâmetros dentro daqueles limites.

> # gerar dados para ilustrar exemplo
> VcnF <- 100
> kdcnf <- 0.1
> L <- 2
> VcF <- 75
> kdcf <- 0.9
> Tempo <- seq(0,4,l=30)
> Y <- (VcnF/(1+exp(2-4*kdcnf*(L-Tempo)))+ VcF/I(1+exp(2-4*kdcf*(L-Tempo))))
> plot(Y~Tempo)
>
> # soma erro aleatório
> set.seed(17082011)
> y <- Y+rnorm(length(Tempo),0,2)
> plot(y~Tempo)
>
> # ajusta modelo
> n0 <- nls(y~(VcnF/(1+exp(2-4*kdcnf*(L-Tempo)))+
+              VcF/I(1+exp(2-4*kdcf*(L-Tempo)))),
+           start=list(VcnF=100, kdcnf=0.4, L=2, VcF=75, kdcf=0.5))
> summary(n0)

Formula: y ~ (VcnF/(1 + exp(2 - 4 * kdcnf * (L - Tempo))) + VcF/I(1 +
    exp(2 - 4 * kdcf * (L - Tempo))))

Parameters:
      Estimate Std. Error t value Pr(>|t|)   
VcnF  75.50288   20.46526   3.689   0.0011 **
kdcnf  0.10316    0.04780   2.158   0.0407 * 
L      2.07184    0.05375  38.548  < 2e-16 ***
VcF   79.33454    9.54395   8.313 1.16e-08 ***
kdcf   0.82652    0.09224   8.960 2.80e-09 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.771 on 25 degrees of freedom

Number of iterations to convergence: 13
Achieved convergence tolerance: 5.083e-06

>
> # gráfico da curva estimada sobre os valores observados
> c0 <- do.call(data.frame, as.list(coef(n0)))
> with(c0,
+      {
+        curve((VcnF/(1+exp(2-4*kdcnf*(L-x)))+ VcF/I(1+exp(2-4*kdcf*(L-x)))),
+              add=TRUE, col=2)
+      })
>

À 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
twitter: @walmeszeviani
homepage: http://www.leg.ufpr.br/~walmes
linux user number: 531218
==========================================================================