Question regarding push buttons

Hello everyone.
I've gotta question regarding the code i'm trying to execute. Basically i've done the setup found on this page http://arduino.cc/en/Tutorial/ButtonStateChange and here's the code i'm trying to execute.

const int  buttonPin = 2;    // the pin that the pushbutton is attached to
// Variables will change:
int buttonPushCounter = 0;   // counter for the number of button presses
int buttonState = 0;         // current state of the button
int lastButtonState = 0;     // previous state of the button

void setup() {
  // initialize the button pin as a input:
  pinMode(buttonPin, INPUT);
  // initialize serial communication:
  Serial.begin(9600);
}


void loop() {
  // read the pushbutton input pin:
  buttonState = digitalRead(buttonPin);

  // compare the buttonState to its previous state
  if (buttonState != lastButtonState) {
    // if the state has changed, increment the counter
    if (buttonState == HIGH) {
      // if the current state is HIGH then the button
      // wend from off to on:
      buttonPushCounter++;
      Serial.println("on");
      Serial.print("number of button pushes:  ");
      Serial.println(buttonPushCounter);
    } 
    else {
      // if the current state is LOW then the button
      // wend from on to off:
      Serial.println("off"); 
    }
  }
  // save the current state as the last state, 
  //for next time through the loop
  lastButtonState = buttonState;
}

When i upload the code to the arduino and open the serial monitor i get output as "on...number of button pushes: 1" but when i press the pushbutton on my breadboard, nothing happens, the counter doesn't increase.
Can someone tell me if the program is supposed to be like that, or the counter should increase and i'm doing something wrong?
Thanks

Can someone tell me if the program is supposed to be like that, or the counter should increase and i'm doing something wrong?

No, and yes.

You are not enabling the internal pullup resistor, so you need an external resistor. You are expecting a HIGH to mean pressed, so the resistor needs to be wired in a pull-down configuration. You do have an external resistor, right? The resistor and switch are wired in a pull-down configuration, right?

Actually i have connected a pull-down resistor. I don't know if there is something wrong with my connection. Anyway, here's an image of the connection.

Anyone can check if the connection is correct?