How can I get this button to be more reliable for my arduino program?
EDIT: Button is connected like this:



If there was no pull-up, one would put the following in setup()

pinMode(button, INPUT); 
digitalWrite(button, HIGH);


An interrupt is an event that 'pauses' the main program, runs a function (called an interrupt service routine or ISR for short), then returns to the main program where it left. Pins 2 and 3 have level and edge triggered interrupts. You can use them to set a flag that indicates the button has been pressed. e.g. adding this code to setup()

attachInterrupt(0, pin2_isr, FALLING);


will run the pin2_isr function when the button brings pin 2 low. Add a flag variable to the start,

volatile boolean pin2_flag = 0;


then the isr function,

void pin2_isr() {
    pin2_flag = 1;
}


EDIT - add a valve state variable so that you don't keep turning them on when they are already on. 

boolean valve_state = 0;


Your main loop could then become

void loop() 
{
    if(pin2_flag == 1) 
    { 
        detachInterrupt(0);      //Interrupt received, turn ISR off
        pin2_flag = 0;           //Interrupt received, clear flag
        //Debounce
        delay(250);
        //Check button still down
        if(digitalRead(2) == 0) {
          if (buttonMode == 0) buttonMode = 1;   //Change mode
          else buttonMode = 0;
          Serial.println("button press");
        }
        //Little delay for debounce
        digitalWrite(13,LOW);
        attachInterrupt(0,pin2_isr,FALLING);   //Re-enable interrupt
    }

    if (buttonMode == 1) {
        double Temp = Thermister(analogRead(0));   // read Thermistor
        //Serial.println(Temp);
        if (Temp &gt; 90 &amp;&amp; valve_state == 0) {
            digitalWrite(feedValve, HIGH);           // turn on feed valve
            delay(5000);                             
            digitalWrite(returnValve, HIGH);         // turn on return valve
            valve_state = 1;
        }
        if (Temp &lt; 100) digitalWrite(heater, HIGH);      // turn heater on
        else if (Temp &gt; 105) digitalWrite(heater, LOW);  // turn heater off
    }

    else if (buttonMode == 0) {
        digitalWrite(heater, LOW);                 // turn heater off
        if (valve_state == 1) {
            digitalWrite(feedValve, LOW);          // turn feed valve off
            delay(5000);
            digitalWrite(returnValve, LOW);        // turn return valve off
            valve_state = 0;
        }
    }
}


Note the change of the second 'if' to an 'else if' and the addition of the buttonMode lines.

By the way, what you have now is a state machine. Add more buttonModes to do more things!

edit: changed interrupt to falling to avoid flag being set when button is held down for too long.

edit 2: changed as per daves suggestion

edit 3: added better debounce

edit 4: interrupt number should be 0 not 2