Your question: Does a case exists where the algorithm does not correctly halt with either a yes or a no answer?
This is undecidable. In simple cases, one can use loop invariant or invariant before and after a recursive call (recursive sorting) to prove the correctness of an algorithm. In general, as Joachim pointed out this cannot be determined.