I would add slightly humorous nonce word котошапка. I believe it would be readily understood as cat-shaped hat, because they are far more common than hats for cats.
Зайцешапка, волкошапка and тигрошапка are, obviously, even less ambiguous.
But this pattern is not universal. I wouldn't say бараношапка (овцешапка instead), мишкошапка, собакошапка, it just ...
... two different things: a "cat hat" (a hat one buys to put onto a cat), and a "cat-hat" (a hat that looks like a cat's head.)
Is there a non-ambiguous way to convey the latter? "Кошачья шапка" covers the former, but I'm told "кошка шапка" is incorrect / non-idiomatic for the latter.
Шапка для кошки. This ...
You can say "кошкошапка". If you mean this thing : https://youtu.be/aMqqjTY8uu8?t=157
I would say just so. Is it idiomatic or not, i,as Russian,don't give a damn. It's just that those who don't know what it is - they may won't guess what it is. :> But most likely they will guess. Or they will think it's a hat made of cat fur:> But I like this ...
It would be OK, if you put the name/style/image in inverted commas or quotes. I mean the second variant.
Шапка (с ушками) «Кошка».
If you mean something like this:
Шапка-кошка is not an idiomatic way of putting it, but it could be if this particular style made fashion.
We do have words шапка-петушок, шапка-пирожок, галстук-бабочка, платье-торт etc. Those are metaphors and not literal descriptions, but the pattern is productive.
For now, шапка в виде кошачьей головы is probably the only non-ambiguous way of putting it.