Checksum in the form as it is used in WIF is enough for everyday life, but one should be aware of fact that it does not say definitively that provided WIF is correct or incorrect, as it is possible to have invalid (not the one expected) WIF and correct checksum. That's because we do not use the full checksum, but only the part, which increases number of collisions.
Base on that fact (rare checksum collisions) I wrote my WifSolverCuda.
Anyway, as I said, for everyday usage it is enough. If someone would write down his WIF and made a mistake / misspelled one more more characters, but kept checksum and receive a new WIF which is accepted by programs, I would suggest playing a lottery
And one more remark - apart of checksum, we may say that we may have mistake in middle/end part of WIF for compressed key if (after decoding) checksum byte is invalid, as we know it should be always 01.