Iterative exponentiation process
Your implementation will not produce correct results in general because your recursive definitions are erroneous.

One should note that in case n = 0, result is 1.  In case of even n (or n = 2 i), one may write b ^ n = (b * b) ^ i.  In case of odd n (or n = 2 i + 1), one may write b ^ n = b * (b * b) ^ i.  Here's an implementation (using if's instead of cond and folding the two recursive steps into one):

(define (fast-expt b n)
  (if (= n 0) 1
      (* (if (= (remainder n 2) 0) 1 b) (fast-expt (* b b) (quotient n 2)))))


To make this definition iterative, use the accumulator, a, that is initially 1.  When n is even (n = 2 i), square b but keep a unchanged.  This maintains the property b ^ n = a * (b ^ 2) ^ i.  When n is odd (n = 2 i + 1), square b and multiply a by b.  This maintains the property b ^ n = (a * b) * (b ^ 2) ^ i.  Thus, we have:

(define (fast-expt b n)
  (fast-expt-iter 1 b n))

(define (fast-expt-iter a b n)
  (if (= n 0) a
      (fast-expt-iter (* a (if (= (remainder n 2) 0) 1 b)) (* b b) (quotient n 2))))