Because that's the way you've written the code. You really want to detect when the Set switch TRANSITIONS TO pressed, not when the switch IS pressed. To do that, you need to keep track of the previous state. Do whatever needs to be done when the switch transitions to pressed (is at some state now, and was not at that state before, and if the current state is pressed). It's best to use two if statements, not one compound statement.
Thank you Paul! I rewrote code as per your suggestion. Issue remains

As long as I keep pressing Increment button faster than each 1 second, time is stopped.
I think problem is setTime function. If I don't call it, time is not stopping, but as soon as it's called faster than each second it's not updating
#include <Wire.h>
#include <Time.h>
#include <DS1307RTC.h> // a basic DS1307 library that returns time as a time_t
#define BOUNCE_TIME_BUTTON 500 // bounce time in ms for the menu button;
boolean isSettingTime = false;
boolean isSettingHours = false;
boolean isSettingMinutes = false;
byte SET_BUTTON_PIN=A3;// "set time" button
byte INC_BUTTON_PIN=A2;// "inc time" button
byte hours;
byte minutes;
byte seconds;
volatile unsigned long lastButtonTime = 0;// last time a button was pushed; used for debouncing;
int cStateSet = LOW; // Current state of Set Button
int pStateSet = LOW; // Previous state of Set Button
int cStateInc = LOW; // Current state of inc Button
int pStateInc = LOW; // Previous state of inc Button
void setup() {
Serial.begin(9600);
setSyncProvider(RTC.get); // the function to get the time from the RTC
if(timeStatus()!= timeSet)
Serial.println("Unable to sync with the RTC");
else
Serial.println("RTC has set the system time");
Serial.print (month());Serial.print(", "); Serial.println (day());
Serial.print (hour());Serial.print (":");Serial.print (minute());Serial.print (":");Serial.println (second());
}
void loop() {
buttonProc();
}
// =======================================================================================
// ---- Check button input and act upon it ----
// =======================================================================================
void buttonProc(){
// check SET button;
cStateSet = digitalRead(SET_BUTTON_PIN); //Get State of the Set button
if ( (cStateSet != pStateSet) && (cStateSet == HIGH) )
processSetButton(); // Set Time Button Was pressed
pStateSet = cStateSet; // Update previous state
// check INC button;
if (isSettingTime)
{
hours=hour(); // Store current hour value from clock
minutes=minute(); // Store current minute value from clock
seconds=second(); // Store current second value from clock
cStateInc = digitalRead(INC_BUTTON_PIN); //Get State of the Set button
if ( (cStateInc != pStateInc) && (cStateInc == HIGH) ) processIncButton(); // Set Time Button Was pressed
//setTime(hours,minutes,seconds,day(),month(),year());
//RTC.set(now());
Serial.print (hour());Serial.print (":");Serial.print (minute());Serial.print (":");Serial.println (second());
}
// display the menu option for 5 seconds after menu button was pressed;
if ((lastButtonTime > 0) && (millis() - lastButtonTime < 6000)) {
return;
}
// return the main mode if no button was pressed for 5 seconds;
if (isSettingTime)
{
// just finished setting up the time;
isSettingTime = false;
}
}
// =======================================================================================
// ---- Process Set Button ----
// =======================================================================================
void processSetButton()
{
Serial.println ("Set button pressed");
//hours=hour(); // Store current hour value from clock
//minutes=minute(); // Store current minute value from clock
lastButtonTime = millis();
isSettingTime = true;
isSettingHours = !isSettingHours;
isSettingMinutes = !isSettingMinutes;
delay (50); //Debounce
}
// ---------------------------------------------------------------------------------------
// =======================================================================================
// ---- Process Increment button ----
// =======================================================================================
void processIncButton()
{
Serial.println ("Set button pressed");
lastButtonTime = millis();
if (isSettingHours)
{
hours++;
if (hours > 23) hours = 0;
}
else
{
minutes++;
if (minutes > 59) minutes = 0;
}
setTime(hours,minutes,seconds,day(),month(),year());
RTC.set(now());
delay (50);
}