Eu estava lendo sua pergunta e pensando as coisas ao longo da linha dos outros pôsteres: você não é adequado para esse trabalho; dê a si mesmo um limite de tempo; faça outra coisa por um momento. Após algumas reflexões, não tenho certeza se alguma das respostas é realmente útil.
O problema com problemas mentais como esse é que eles não são fáceis de resolver, fazem parte de você e, obviamente, você se preocupa (talvez demais) com o seu trabalho, não tem confiança para concordar consigo mesmo, também inexperiente em considerar que sua primeira escolha estava certa o tempo todo, ou se estressa demais em acertar perfeitamente. Por que mais você se preocuparia com essas trivialidades ?!
Agora eu tenho problemas semelhantes, mas não tanto com código .. geralmente é o que ter para jantar .. pizza ou curry .. hmm ... pizza mas depois curry é bom, mas eu me sinto como um curry, pizza é mais barata , mas você ganha mais curry, mas ... e assim por diante. :)
Então pensei: por que não tenho problemas semelhantes com a codificação e acho que é simplesmente porque tenho um conjunto de padrões que uso regularmente. Se eu precisar de uma definição de função, é fácil .. estará na mesma linha que todas as outras definições de função que eu já codifiquei. Se eu precisar de um fluxo de controle, primeiro decido se preciso de um loop for ou while, e depois crio o mesmo código antigo que usei na última vez em que precisei de uma dessas coisas. O mesmo vale para tudo, eu quero uma fila? Claro - vamos recortar e colar meu código de fila 'padrão' (arquivado no último projeto em que trabalhei ou em qualquer um em que me lembro de usar uma dessas coisas). Resultado final ... Só me preocupo com coisas novas e, para ser sincero, é um prazer.
Portanto, meu conselho é começar a criar uma biblioteca de trechos de código - eu costumava enviá-los por e-mail para mim e colocá-los em uma pasta, mas o que quer que você trabalhe é o melhor - e então você começará a saber o que fazer todas as vezes. Você sempre acessará o código antigo que escreveu e resolverá o problema, pronto para o próximo problema. Você descobrirá que se tornou um desenvolvedor muito mais rápido (sério, esta é a única maneira de obter produtividade do programador) e, com sorte, encontrará tempo para os momentos divertidos, não para as coisas cotidianas sombrias que você já resolveu muitas vezes sobre.
Obviamente, a última parte de tudo o que é importante também - quanto mais trabalho você tiver, menos luxo terá para gastar tempo pensando.