Assuming you have some programming skill already, the first step would be to trace the compression routine. Play the game in BGB until the uncompressed graphics appear on screen and make a note of their location in VRAM. Then reset to right before the graphics appear in VRAM, set a write breakpoint to that location in VRAM, and play until it trips. This will point you to the tail end of the compression routine, which you can then trace to until you understand exactly how it works.
As mentioned before, odds are it's some kind of LZ compression scheme. There will be some kind of mechanism in play to determine whether each code is a "plaintext" byte or a compression code. Each compression code consists of a "length-width" pair that indicates to the decompressor how far back to look for the next sequence in the output buffer, as well as how many bytes to transfer from that position.