а что мешает проверить а php какие поля заполнены и собирать условие выборки.
К примеру
$query_strung = array();
if (isset($_REQUEST['field1'])) $query_string[] = "`field1`='" . mysql_real_escape_string($_REQUEST['field1']) . "'";
...
if (isset($_REQUEST['fieldN'])) $query_string[] = "`fieldN`='" . mysql_real_escape_string($_REQUEST['fieldN']) . "'";
if (count($query_string)) $query_string = implode(', ', $query_string);
else // генерим ошибку о незаполненых полях
далее заpапрос
$query = "SELECT * FROM table WHERE " . $query_string . " ORDER ... LIMIT ...";
--- add ---
Я когда делал кастомизируемую форму, сделал описание всех поле и их типов в базе
после запроса сперва забирал возможные поля и их типы, а потом просто переберал массив $_GET и формировал запрос