I think your drawing is a little misleading because you choose to draw strokes from the point on the circle tangent to your moving direction. I can see that the collisions to your grid edges happends when the TOP and LEFT points of your circle touch an edge.
Let C be your center and r the radius so P' = C + (r,0) and P" = C + (0,r).
If D is your direction vector (the versor) you have two lines :
R' = D · t + P',
R" = D · t + P"
You simple have to find the intersection of those lines with the lines of equation:
y = i and y = i that are the edges of your grid!
The solution are easy because you have to simply consider the x or the y component of R' and R". You will find the *t*s value for each insersection, and the points for thoose *t*s, simply sort those point by t and you are done.
I belive you can easely say what cell is hitted if you know the interction point.
This works if r < 1 (the cell width and height).
It works also for the other cases simply doing some consideration about P' and P". We choose TOP and LEFT because of direction, BOTTOM and RIGHT should be considered for opposite direction, you understand why.
Now look at this image:
The circle is bigger then a single cell and we suppose it is going the same direction as your drawing. P1 is the first point that will touch, P2 is the second, P3 is useless because is in the bottom half. What you need to do is to cast rays from P1 and P2 as we seen before and do the same for the vertical lines.
In general you will have other starting points along with the TOP and the LEFT ones from where shoot your rays, bigger your circle is, the more rays to cast.
To be honest some you can avoid to shoot all that rays doing some geometrical consideration, but that can make the things harder to understand.