I wonder if there's a way to turn the attributes (background and foreground color) into 8x1 cells.
As trollbridge said, there isn't enough VRAM in the CGA to have 200 rows of 80 columns (2 bytes per cell - one for character and one for attribute). But it can be done in 40-column mode. As the CRTC can only do 128 rows unattended, it requires the CPU to be involved (reprogramming the CRTC several times per frame on particular scanlines) but 8088 MPH and Area 5150 did such things.
I'm 90% sure someone has done this, interrupts on each scan line.
You can set the character height to 1, and can actually make the width of each cell 4 without any attribute clash issues.
Since the card only has 16,384 bytes of memory, you can only get 102 rows this way. With a 4x2 cell, you can fill in the whole 200 rows of the display (still 100 rows, but each row is doubled.)
The CGA always runs at 60 hz, and strangely enough, does not send out an interlaced signal, so it really does run at a true "200p" resolutionm, 60 hertz non-interlaced. Don't be confused by the fact the CGA's graphics layout is arranged in an interlaced fashion - it does that because the CRTC can't address more than 128 rows, so with the row height set to 1 scanline, the CRTC is "recycled" for the second pass.