Access 2003 is perfectly fine
To group by year you use the Year() function to get the year portion of your date field and group on that.
To group by 6 month intervals you would do something like:
... then group on this field. This will return True (i.e. -1) if the month is between Jan and Jul, and False if it isn't (i.e. 0). So -1 will come before 0.