Tecnicamente, não há como tornar um processo impossível de matar.
É claro que, para usuários não-root, eles podem apenas matar processos que tenham o mesmo ID de usuário, portanto, se você puder fazer contas diferentes, poderá usar um ID de usuário "exclusivo" para o processo e mate isso.
Uma solução simples, mas menos robusta, é fazer com que o seu processo capture o maior número de sinais possível (talvez ignorando-os). Isso só é adequado para exemplos de brinquedos ou ambientes não adversários, pois não há como capturar o sinal KILL (sinal 9), mas, caso contrário, você pode evitar ser morto por eles.
Por fim, você pode providenciar para que seu processo seja reaberto se for morto. Isso também é frágil (muito frágil), mas dificultará a eliminação. Isso pode ser feito usando um processo de monitor ou usando o inittab. Para um adversário que sabe o que está fazendo, isso pode ser facilmente contornado ao matar vários processos de uma só vez.