Estou na mesma posição que o OP - tendo aplicativos de swing herdados, mas precisando implementar novos idiomas e interfaces que ele não suporta nativamente. O maior desses aplicativos foi refatorado algumas vezes por vários motivos (melhorar a modularidade, melhor MVC e estrutura de envio de eventos etc.), portanto, não sou totalmente avesso a reescrever o código da interface do usuário. Então, eu pensei muito sobre o assunto.
No entanto, algumas coisas não podem ser resolvidas com o Swing sem investir muito mais tempo e esforço no que é essencialmente uma tecnologia herdada. Por exemplo, exceto eventos simples do mouse, novos dispositivos de tela de toque e não são suportados pelo próprio Swing. Fornecer um componente de navegador baseado em Swing é igualmente problemático ou caro e, no meu caso, a abordagem javafx-in-swing não é uma opção, pois complica o tratamento de eventos da interface do usuário de maneiras não triviais.
Eu acho que tem sido o velho e fiel em seu tempo, e se sua plataforma é tão imutável quanto sua base de código - fique com ela, obviamente. Mas, para que um aplicativo avance para novos casos de uso mais contemporâneos, o JavaFX 2+ provavelmente será o caminho a seguir no meu caso.
Como uma observação lateral: a única falha no Swing que eu adoraria ter desaparecido no jfx - mas não o fez - é a abordagem de um thread para regra de todos eles no envio de eventos da interface do usuário. Qualquer interface de usuário não trivial precisa de multi-threading para manter a interface do usuário nítida e responsiva, e deixar inteiramente ao desenvolvedor de aplicativos tropeçar nas mesmas armadilhas com tanta facilidade é um déficit no API IMHO.