Ouch,
tu as ue mechante memory leak dans ton programme. A chaque frame, tu fais un appel a SDL_LoadBMP, mais tu ne libere jamais cette memoire. Tu devrais faire tous tes chargements d'image au debut de ton application et juste utiliser la bonne pour afficher.
Aussi, tu ne poll qu'un seul evenement par frame ce qui veut dire que potentiellement les evenement vont s'accumuler. De plus, il te faut verifier le type de l'event avant de regarder event.key.keysym.sym. Si ca se trouve, ce n'est pas un evenement clavier que tu obtiens.