You could write a function to return the current quarter, and then just subtract 3 months from the date repeatedly to get the previous quarters:

    public static int GetQuarter(DateTime date)
        {
            int[] quarters = new int[] { 4,4,4,1,1,1,2,2,2,3,3,3 };
            return quarters[date.Month-1];
        }

** Note, of course update this code to reflect which quarters your months apply to.  Function from (http://stackoverflow.com/questions/8698303/how-do-i-discover-the-quarter-of-a-given-date-in-c-net-3-5-or-4-0)

But then it becomes trivial to get the current and previous quarters:

    DateTime date = DateTime.Now;
    var currentQuarter = GetQuarter(date);
    date = date.AddMonths(-3);
    var prevQuarter1 = GetQuarter(date);
    date = date.AddMonths(-3);
    var prevQuarter2 = GetQuarter(date);
    date = date.AddMonths(-3);
    var prevQuarter3 = GetQuarter(date);

Hopefully this is a good solution to cleaning up your code some.  You can test it out here on csharppad: http://csharppad.com/gist/c0bea5365ec515a077db

If you need both the quarter and the year, you can return a custom object that stores both values, i.e.:

    public class Quarter
    {
       public int Quarter { get; set; }
       public int Year { get; set;}
    }