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.
If you have one condition to count() then the query can scan the narrowest index that covers the count. Even if is a full scan, the number of pages read is much smaller than that of a the clustered index scan, that is probably much wider. When you have multiple conditions the candidate rows have to be joined and the query plan may abandon the non-clustered index scans (or range scans) and go for a full table scan.
In you case, what likely happens is:
[Date] >= '8/1/2009'
is satisfied by an index that contains Date, most likely by an index ON Date, so its a fast range scan[Zip] In (Select ZipCode from dbo.ZipCodesForRadius('30348', 150))
same as Date. Even if you don't have index on Zip, you likely have one that contains Zip.FreeText([Description], 'keyword list here')
fulltext search for count, that goes on through internal FT indexes, fast.
All three conditions. Now it gets messy. If you have enough RAM the query can make a plan for FT search first, then HASH-JOIN then Zip scan then HASH-JOIN the Date. This would be fast, on the order of 3+3+8 seconds + change (for the hash operation). But if you don't have enough RAM or if the optimizer doesn't like to do a hash-join, it will have to do an FT search, then nested loop search of Zip then nested loop search of Code and it may hit the index tipping point in its decisions. So most likely you get a table scan. This is of course speculation on my part, but after all you posted just the T-SQL text and zero information about the structure of your clustered and non-clustered indexes.
In the end you have to remember that SQL is a not your C-like procedural language. When talking about performance in SQL is never about comparisons and boolean logic. It's always about data access and the amount of pages read. So even though each individual condition can be satisfied by a small, fast, index range scan of a narrow non-clustered index or FT index, the combination cannot (or in his case, the Query Optimizer did not figure out a way to).