Whew. I solved the problem a different way using two queries. I was able to come up with the output pictured in the attached jpg.
Short explanation:
First, I added an autonumber transaction field to the data table. Doesn't look like your mmm-yy field data is unique, therefore, without a unique identifier for each transaction, it's hard to know which Mar-03 transaction came first, and therefore which should or should not include the other in the rolling average. I used "SDate" and "SAverage" to avoid using "Date" and "Avg" as field names, since they are reserved words.
Next, I created a query with two copies of the data table. I did not join them using equijoins, but two non-equijoins.
Finaly, I did a totals query off that first query and used the aggregate Avg function to get the rolling average.
It's pretty hard to describe verbally. I'll attach pictures of the queries so you can see them visually.
Don't know if that was overall easier than using a custom function. Please comment everyone.