Sim, é possível. Como David e Paul afirmaram em suas respostas, não há mecanismo no TCP (além de keep-alives de TCP, que são opcionais) para detectar uma conexão semiaberta. Cabe ao fornecedor do aplicativo determinar o estado da conexão e tomar as medidas adequadas de acordo.
No que diz respeito ao TCP, não há detecção ou distinção entre uma conexão semiaberta e uma longa conexão ociosa.
Você terá que começar a solucionar isso da camada 1 (física) do modelo OSI até a camada 7 (aplicativo) para descobrir onde o problema está ocorrendo. Meu conselho seria instalar e executar um programa de captura de pacotes em um dos clientes afetados até que o problema ocorra e, em seguida, analisar a captura para tentar determinar o que está causando o cliente a não fechar a conexão.