magari comincerei dal pulire un po' il codice

ltrim + rtrim = trim

codice:
$categoria =  isset($_POST['categoria']) ? trim(strip_tags(stripslashes($_POST['categoria']))) : '';
ecc...

se $categoria != '' si vede che è postata no?

codice:
if ($categoria != '') {
        $where_clause .= " categoria='$categoria' AND ";
}
ecc..

per la paginazione dovrebbe esserci una pillola di guidoz