Hmm, how about... If you know the radius, then of course you know how "wide" the circle will be = how many pixels on the X scale the circle will span. What I'm thinking is, for each pixel-step on X axis, calculate the Y-difference and draw a line from (Xpos, centerY+diffY) to (Xpos, centerY-diffY). Since you'll probably save diffY to a variable to avoid calculating it twice, you could use this knowledge to draw a line on the opposite X-side of the circle.

Pseudocode:
Code:
procedure circle(cx,cy,r) {
   r2 = r * r
   for x := r downto 0 {
      y = sqrt(r2 - x*x)
      dx = cx - x
      drawline(dx, cy-y, dx, cy+y)
      dx = cx + x
      drawline(dx, cy-y, dx, cy+y)
      }
   }