Se você tratar a refatoração como algo próprio, e não como parte do processo de desenvolvimento, ela poderá se tornar interminável.
Se você seguir a abordagem de desenvolvimento orientada a teste do refator vermelho, verde, normalmente não precisará gastar muito tempo refatorando por dois motivos:
Você estará refatorando à medida que avança, para que não se torne uma tarefa gigantesca, apenas mais um pequeno passo no ciclo do TDD.
A "pressão" interna para obter o próximo teste escrito manterá seus esforços de refatoração em um nível sensato.
Se você estiver trabalhando com código legado, siga a "regra do escoteiro do tio Bob". Timebox-se por um curto período de tempo (digamos, 30 minutos) e tenha como objetivo verificar o código em um estado mais limpo do que era antes. Cada vez que você precisar tocar no código, o deixará um pouco melhor. Com o tempo, o código mais modificado será o mais legível e bem fatorado na sua base de código.