A: 

Maybe instead of actually drawing the path you can just approximate the diameter of the path and draw a circle with your approximation.

Here is some code to detect a circle gesture on the iPhone: http://www.mobileorchard.com/iphone-circle-gesture-detection/

Corey Floyd
The shapes won't necessarily be even close to circles though...they can be any touch drawn shape.
A: 

Record all of the points in a doubly-linked list. When it comes time to fill, walk the list from the start and find the point that's closest to the end. Then, lineto that point, then lineto each point in reverse order, stopping with the second point in the list. The fill will implicitly close the path, which will jump from where you left off (the second point) back to the start (first) point.

This is just off the top of my head; you can play with a couple of variations on this to see what works best. You might record the closest previous node in each node, but this could get expensive for many nodes.

Peter Hosey