люблю, когда нужно найти идеальное геймдизайнерское решение! вопрос действительно интересный!
мои варианты:
1. использовать последний ключ с надписью вроде "продолжение следует" - зазор на следующую часть игры
2. проверять, что этот ключ - последний, что все уровни пройдены, и на его место класть не визуальный ключ, а что-то иное. свиток, например.
3. вариация предыдущего пункта. после добычи последнего ключа проигрывается анимация, что он вдруг раскалывается или еще что - и показывается текст вроде you win))
4. в принципе, если обыграть открытие бонусного уровня - то может и нормально пройти. вроде чердака в Braid'е.
а теперь просто мысли:
- получается, у тебя все уровни одинаковой сложности? иначе, вдруг я использую ключ на какой-то сложный уровень... почему не застряну?
- когда-то я делал разбивку игры на кольца. на каждом из колец по пять уровней. можно играть в любой на кольце. когда кольцо все пройдено - открывается следующее кольцо опять же с пятью уровнями. и так далее. то есть здесь совмещены последовательность уровней и небольшая свобода выбора. в принципе - как у тебя, но без проблемы с "последним ключом"