Dein Programm ist nicht Schuld; es macht genau das, was es soll. Evtl. hast du etwas anderes beabsichtigt.

Mit der if-Abfrage testest du genau einmal, ob die Taste gedrückt ist. Ist sie es, schaltet das Programm die LED an. Ist sie es nicht, läuft das Programm einfach so weiter. Nach der if-Abfrage ist aber main() zu Ende, also beendet sich das Programm; das bedeutet bei WinAVR wohl, dass es in eine Endlosschleife geht und nichts mehr macht.

Du solltest vielleicht erstmal die Grundlagen von C lernen, am besten nicht auf einem uC, sondern auf einem normalen PC mit gescheitem Debugger. Dann passieren dir solche Fehler nicht mehr.