Watchdog System for Arduino GSM

This should demomstrate how your setup could function. I can't test it though. Remove the connection you have made to the reset pin. I've also highlighted one issue in your existing code.

#include <Arduino.h>  //v2
#include <avr/wdt.h>  //v2

void setup() {

  wdt_disable();     //v2
  delay(2L * 1000L); //v2
  wdt_enable(WDTO_2S); //v2

  digitalWrite(testPin, HIGH);  // at this stage testPin is an input so this sets the pullup resistor on.

  // Start Timeout Timer

  startMillis = millis();

  // initialize the LED pins as an output

  pinMode(readyPin, OUTPUT);
  pinMode(failPin, OUTPUT);
  pinMode(callPin, OUTPUT);
  pinMode(testPin, OUTPUT);


  // initialize the pushbutton pin as an input

  pinMode(buttonPin, INPUT);

  // connection state

  boolean notConnected = true;

  // Start GSM shield
  // If your SIM has PIN, pass it as a parameter of begin() in quotes

  while (notConnected == true) {

    digitalWrite(failPin, HIGH);


    if (gsmAccess.begin(PINNUMBER) == GSM_READY)

    { notConnected = false;
      digitalWrite(failPin, LOW);
      digitalWrite(readyPin, HIGH);
    }


    currentMillis = millis();
    static unsigned long lastResetAtMs = 0 ;

    if (currentMillis - startMillis >= startupPeriod) {
      digitalWrite(testPin, LOW);
    }
    else {
      if ( currentMillis - lastResetAtMs > 1000 ) {  // v2
        wdt_reset(); // v2  - reset wdt every 1 second until startupPeriod expires
        lastResetAtMs += 1000 ; // v2
      }
    }

  }
  wdt_disable();     //v2
}