With the help of godek at comp.lanf.scheme (which wasn't so dead as it seemed), I was able to get a working and vastly simpler macro written. For the record, the final version is:
(define-syntax define-field-pattern
(lambda (x)
(syntax-case x (width default =>)
((_ name (width w) ((p-0 ... => value) ... (default => value-n)))
#'(define name `((width . w) (((p-0 ...) . value) ...
(default . value-n)))))
((_ name (width w) ((p-0 ... => value) ...))
#'(define name `((width . w) (((p-0 ...) . value) ...))))
)))
Thanks for everyone who tried working on this for me.