One option could be to have the formula return only dates which are below the end date, and blank in the other cases.
In your comments, you have a formula to calculate the next date based on the adjacent cell, which I assume goes into cell G11. The formula could first check to see if the new date will exceed the end date, and if so, return blank:
=IF(OR(DATE(YEAR(F11),MONTH(F11)+$F$13,DAY(F11))>$F$12 , F11=""),
"",
DATE(YEAR(F11),MONTH(F11)+$F$13,DAY(F11)))
In the first line, the formula checks to see if the value planned for G11 exceeds the maximum date, or the value on the left is blank.
If this is the case, then blank will be returned, which signals the other cells to also return blank.
If the date is valid, then the third line enter the date into the cell.
Of course, you don't have separate lines in excel formulas, so everything should be entered onto one line. The formula can then be copy & pasted into the adjacent cells, giving:
F G H I J K L M
------------+--------------+--------------+------------+------------+---+---+---+
Jan 1, '12 + Apr 1, '12 + Jul 1, '12 + Oct 1 '12 + Jan 1 '13 + + + +
------------+--------------+--------------+------------+------------+---+---+---+
Jan 1, '13 + + + + + + + +
------------+--------------+--------------+------------+------------+---+---+---+
3 + + + + + + + +
------------+--------------+--------------+------------+------------+---+---+---+
If you wanted this in the list, copy the formula for the maximum number of dates you envisage, and then the list will show the dates followed by blanks. There doesn't seem a way around the list including the blanks, but at least it will contain only dates which are valid.