How to filter hstore where values are not null in a trigger?
With only built-in tools of Postgres and the additional module hstore, without involving jsonb (as requested):
audit_row.row_data = hstore(
   ARRAY (
      SELECT ARRAY[key, value]
      FROM   each(hstore(NEW.*) - excluded_cols)
      WHERE  value IS NOT NULL
      )
   );

One of the overloaded variants of the hstore() functions takes a two-dimensional array.
Alternatively, you could eliminate key names listed in excluded_cols in the WHERE clause (while processing unnested keys anyway):
audit_row.row_data = hstore(
   ARRAY (
      SELECT ARRAY[key, value]
      FROM   each(hstore(NEW.*))
      WHERE  value IS NOT NULL
      AND    key &lt;&gt; ANY (excluded_cols)
      )
   );

Might be a bit faster, not sure. Probably not much difference.
Also not sure how jsonbandjsonb_strip_nulls()` (suggested in comments) perform in comparison. Can you report back with a performance comparison?