A simple formula that will do it is where I have 2 custom fields both of Date data type, Start_Date__c and Target_Test__c. You could change the <> to a >= to make it greater than or equal to the date. 

    Target_Test__c <> CASE( MONTH(Start_Date__c) , 
1, DATE(YEAR(Start_Date__c),10,31) , 
2, DATE(YEAR(Start_Date__c),11,30), 
3, DATE(YEAR(Start_Date__c),12,31), 
4, DATE(YEAR(Start_Date__c)+1,1,31), 
5, DATE(YEAR(Start_Date__c)+1,02,28), 
6, DATE(YEAR(Start_Date__c)+1,03,31), 
7, DATE(YEAR(Start_Date__c)+1,04,30), 
8, DATE(YEAR(Start_Date__c)+1,05,31), 
9, DATE(YEAR(Start_Date__c)+1,06,30), 
10, DATE(YEAR(Start_Date__c)+1,07,31), 
11, DATE(YEAR(Start_Date__c)+1,08,31), 
12, DATE(YEAR(Start_Date__c)+1,09,30), 
DATE(YEAR(Start_Date__c),10,31))

If you need the Specific Date returned then I would think using a formula field with Date return type and the formula from 'CASE..' onwards would work better than manual entry.