To get the text to be displayed as output, even if it is the word ON, the word OFF, or an option sequence, use the infamous echo dot trick. Instead of the echo command, use the echo. command.
C:\>set g=/?
C:\>echo. %G%
/?
C:\>echo. on
on
C:\>echo.%G%
/?
C:\>
Notice the odd behaviour of echo. with respect to separating whitespace, and with respect to how the command-line parser detects the end of the command name. If you have JP Software's TCC/LE, you can of course still use this rather dubious syntax, which has its roots in the MS-DOS COMMAND where several punctuation characters in addition to whitespace were "termination" characters, but it's far better to use the more regular native syntax of TCC, not least because it retains ordinary whitespace as the separator between command name and command tail:
[C:\]set g=/?
[C:\]echo ``%G%
/?
[C:\]
TCC's native syntax will not prevent on and off from being recognized specially, however. For that you still need the echo. command.