How to monitor a switch's state and do X if switch has remained in state B

Ahhh, I see your problem:

long switchPinsWaitTime = 30000;		//30 seconds

if(value2 && switch_timestamp1 && (millis() - switch_timestamp1) >= switchPinsWaitTime)

switch_timestamp1 += 60000;

As is, this "trick" only works when the interval is greater than the amount you are adding. The reason being is the millis - timestamp when timestamp is bigger than millis would logically return a negative number if we were doing it on paper. The problem is that you are using an unsigned number, meaning the negative numbers are stored as really high numbers, so your comparison to the interval will evaluate true on every iteration. You can see this by printing result of millis-timestamp in your if statement and noticing the large numbers.

To fix this, you just need to add a comparison in you if statement to make sure that millis is greater than the timestamp.