`for` has a nifty special form `:when`. You could use it like so:
~~~{.clojure}
(for [x (range 9)
      y (range 9)
      :when (not (has-value? board [y x]))]
  [y x])
~~~