else if (buttonState == LOW);
By putting a semi-colon after the if statement here you have created an empty if clause (ie, no action), so nothing happens.
Just as a tip - you don't have to test with an if in the else part of the statement - else is already everything else so if it not == HIGH everything else (in this case == LOW) will flow into the else without the special test.
And here is also an alternative for your code:
void loop()
{
boolean change = false;
digitalWrite(LED1, LOW);
while (change == false)
{
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH)
{
digitalWrite(LED1, HIGH);
delay (2000);
}
change = (buttonState == HIGH);
}
}