je croyais que ça marchait, mais en fait c'est quand le .h est dans le même dossier que le PDE, pardon pour la fausse joie 
par contre je viens de comprendre ce qui se passe : voila la ligne d'appel de GCC que l'on peut obtenir en cochant la case "show verbose output" dans les pref de l'IDE 1.0 :
avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I/home/yann/arduino-1.0/hardware/arduino/cores/arduino -I/home/yann/arduino-1.0/hardware/arduino/variants/standard /tmp/build4840850446026298026.tmp/Datalogger_SD_RTC.cpp -o/tmp/build4840850446026298026.tmp/Datalogger_SD_RTC.cpp.o
on voit là dedans que ce n'est pas directement le PDE qui est compilé dans son dossier d'origine, mais une copie qui en est faite dans un dossier temporaire. Du coup le chemin relatif du .h par rapport au fichier pde, ben ça ne marche pas, forcément !! Pour que ça marche il faut donc mettre le chemin complet du fichier .h, c'est complètement débile, en fait.
Et le second truc idiot avec ce système, c'est que si dans le .h on veut appeler une lib, alors là aussi il faut fournir le chemin complet !! car sinon il ne la trouve pas ???
A trop vouloir simplifier les choses, finalement ça en devient inutilisable.....
EDIT : bon sang, même si le .h est à la racine du projet on ne peut pas appeler une lib dedans, il ne trouve pas le fichier !! là par contre je ne comprends plus...
EDIT2 : ok là aussi je viens de comprendre pourquoi ça foire en allant faire un tour dans le dossier temporaire... en fait l'IDE arduino copie dedans les librairies appelées depuis le .PDE, mais pas ce qui peut être appelé dans un .h différent ! donc forcément si les lib sont dans le .h, le compilateur ne trouve pas les lib dans le dossier de compilation et ça ne marche pas...
EDIT3 : ha non pardon, en fait il ne copie pas les lib mais il les inclus dans la ligne de commande du compilateur :
avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I/home/yann/arduino-1.0/hardware/arduino/cores/arduino -I/home/yann/arduino-1.0/hardware/arduino/variants/standard -I/home/yann/arduino-1.0/libraries/SD -I/home/yann/arduino-1.0/libraries/Wire -I/home/yann/sketchbook/libraries/DS1307 -I/home/yann/sketchbook/libraries/OneWire -I/home/yann/sketchbook/libraries/DallasTemperatureControl /tmp/build4840850446026298026.tmp/Datalogger_SD_RTC.cpp -o/tmp/build4840850446026298026.tmp/Datalogger_SD_RTC.cpp.o
à comparer avec le ligne de commande citée plus haut quand les libs sont dans le .h ........ là je crois que c'est isoluble, sauf à modifier l'IDE en profondeur ! ou alors juste modifier la ligne de commande de base du compilo pour include par défaut toutes les libs dispo, mais faut voir ensuite si il va les compiler quand même même si elles ne sont appelées nulle part ou pas... sinon la taille du programme va remplir la mémoire de l'arduino pour rien