I posted a simple answer to your question on stack exchange here https://mathematica.stackexchange.com/a/303798/9490
myObject /: MakeBoxes[myObject[data_], form_] := With[ {interp = Interpretation[visualRepresentation[myObject[data]], myObject[data]]}, MakeBoxes[interp, form] ]
It works exactly as I wished and is indeed super simple. Thank you so much!
I was facing the same issue while trying to make the Hypergraph object that behaves exactly like Graph and Tree. I just looked into their FormatValues and copied stuff from there. You can see this hack that overloads GraphicsBox here: https://github.com/WolframInstitute/Hypergraph/blob/main/Kernel/Formatting.m
Excellent, I'll try to use your code as a template. Thank you!