AC_CHECK_HEADERS effectue en fait une vérification de compilation, pas une vérification d'existence. Vous devez donc définir la prise en charge de C++ pour les tests de compilation afin que les en-têtes boost soient compilés (la valeur par défaut est C, docs ici) :
AC_LANG_PUSH([C++])
AC_CHECK_HEADERS([boost/foreach.hpp], [],
[AC_MSG_ERROR(You need the Boost libraries.)])
AC_LANG_POP([C++])
Il existe également une collection de macros Boost autoconf dans l'archive GNU Autoconf. Vous aurez probablement besoin d'au moins AX_BOOST_BASE. D'autres macros pour les autres bibliothèques Boost sont également présentes.