Yes. You can use a Menu with a Set Priority step to do this. If you want to achieve an "at any time" functionality be sure to deselect the Clear DTMF Buffer parameter on the Menu step. Also, when the call is on hold you cannot use a Delay step. Instead, use a Play Prompt step with a prompt of DP[x *1000] where x is the number of seconds worth of on-hold delay you want. The Play Prompt step allows Barge In from the caller so a DTMF press while on hold (this is why CCX requires out-of-band DTMF reception) would cause the script to move forward.
Also, for fit-and-finish, you would probably want to nest the Menu step within an If step evaluating the contact's existing priority. If it has not yet been increased, play the menu. If it has, stop offering that option.
Please remember to rate helpful responses and identify helpful or correct answers.