The problem is that the query in question runs very slow when compared to the query run with one or two, rather than all three of its conditions.
Now the query.
I suspect the Date field is not indexed, and without an index to rely on to filter the resultset before applying the where clause on the non-sargable columns, it gives them all equal weight and does not perform the quick filters first before applying the other more expensive clauses.
When I am unable to tune the database using indexes, etc., I often find that re-writing the query similar to this is enough to direct the compiler to a more efficient query:
Select Count(*)
From (
Select 1
From SearchTable
Where [Zip] In (Select ZipCode from dbo.ZipCodesForRadius('30348', 150))
)
Where [Date] >= '8/1/2009'
AND FreeText([Description], 'keyword list here')