You don't have to let a program run forever to determine if it will halt or not. There are other things you can do, like check the state at every state to see if it is identical to a previous state. If so, then you're in an infinite loop. There are other things you can do to prove that a loop will never terminate, but they get more complex.
It is a staggeringly complex problem for a more general case, and you can come up with a handful of specially designed programs that will always break it, but for the vast majority of cases it is solvable.
That's why it seems weird to me that you would immediately ditch the entire concept just because there's one crazy hack program out there that could break it, and only if you've specifically crafted your testing program so that it will fail in that case.