This should be what you are after - not tested the performance though
declare @date datetime
set @date = '10 july 2010'
SELECT * FROM myTable where CAST(CAST(DATEPART(year, @date) as varchar(50)) + '-' + CAST(DATEPART(month, @date) AS varchar) + '-1' AS DATETIME) between FIRSTPAY_DATE AND RECOVERY_DATE
Edit:Fixed minor spelling error