Voir là:
http://playground.arduino.cc/Code/AvailableMemory
un outil qui permet d'afficher la mémoire disponible.
Il faut faire des appels à cette fonction et imprimer la valeur retournée à différents endroits du logiciel pour suivre la consommation de la mémoire. L'idéal étant de faire une première "mesure" à la fin du setup() pour voir la quantité de mémoire disponible après initialisation. Ensuite il faut adapter en fonction du programme.
Déjà avez-vous besoin de la librairie SD? Comptez-vous enregistrer les valeurs relevées par le GPS? Cette librairie à besoin de pas mal de mémoire car elle maintient un buffer de lecture/écriture puisque les accès à la carte mémoire se font par paquets.