The simplest approach would be to write a PAM which asked for multiple passwords. No need to touch the kernel.
I suggest asking three questions per login would be cleaner than trying to maintain state of how many previously-correct passwords were entered. Otherwise you have potential interactions where logins happen concurrently or tools attempt to login using a saved (last) password... also lockout policy would need consideration in the face of right-but-wrong passwords. You would also have to ensure that the module gave no external sign of part-passwords being correct.
Three passwords is logically equivalent to one long password, with the additional element of a measure of obscurity. It might be simpler to strengthen password length/complexity requirements.