How can I group view results based on the week of the year using a date field?
You can do this without using a PHP field (or similar). Those modules are usually bad practice to put PHP into the database like that.

You can create a date format in Drupal for 'Week'.  Then you add the date field to the View and use this week format.  That will output the value of the date as a week #.  Then you group on that value.

A views filter can also help restrict the view to now + 4 weeks.  And some views theming can make each week header be whatever you need it to be.