Multiplication in terms of addition
Your implementation will not produce correct results in general.

In the base case of b = 0, result should be 0.  In the case of even b, result is double a times half b (which you have done correctly).  In the case of odd b, result should be a + (double a times half (b - 1)).

(define (times a b)
  (cond ((= 0 b) 0)
        ((even b) (times (double a) (halve b)))
        (else (+ a (times (double a) (halve (- b 1)))))))


To make this definition iterative, add an accumulator, like so:

(define (times a b)
  (times-iter 0 a b))

(define (times-iter acc a b)
  (cond ((= 0 b) acc)
        ((even b) (times-iter acc (double a) (halve b)))
        (else (times-iter (+ a acc) (double a) (halve (- b 1))))))