O problema do vendedor ambulante é aparentemente acessível ... pelo menos onde estou, esse parece ser o problema mais popular de CS entre pessoas que não são de CS. Também achei a ilustração a seguir do Vertex Cover bastante atraente, como foi introduzida por meu instrutor de algoritmos:
Você tem uma rede de estradas e deseja garantir que, se um carro estiver sem combustível, haja um posto de gasolina em pelo menos um extremo da estrada.
Como planejador da cidade, você deseja minimizar os custos criando o menor número possível de postos de gasolina. Esse é essencialmente o problema da cobertura de vértices, e obtive algum sucesso ao apontar que, embora você não espere encontrar a cobertura ideal de vértices no tempo polinomial, é possível encontrar algo que está apenas a um fator de dois no tempo polinomial, simplesmente escolhendo os dois pontos de extremidade de uma correspondência máxima (bem, esse último detalhe pode ser omitido dependendo do interesse de seu público - especialmente porque o algoritmo MM não é exatamente uma linha dupla).
Quanto a um exemplo de um "salto na complexidade" com uma pequena mudança na natureza do problema, acho que a diferença entre verificar a 2 cores e a 3 cores é um bom exemplo. Com toda a publicidade em torno do teorema das quatro cores, pode-se também apontar que verificar se um mapa pode ser adequadamente colorido com apenas três cores em vez de quatro é difícil, mesmo sabendo que sempre pode ser colorido com quatro cores. Um bom número de pessoas acha isso bastante surpreendente.
Outra situação bastante natural é o problema de recuperação de impasse nos sistemas operacionais. Isso é modelado pelo problema NP-completo do conjunto de vértices de feedback - o menor número de vértices cuja remoção torna o gráfico acíclico - e também acho esse um exemplo notável (e é explicado mais detalhadamente nesse artigo da wikipedia).