It's not really going to be possible with cached map services. At large scales though, you can use a dynamic map service with fairly quick response.
One somewhat complicated way to pull this off might be to have two map objects. One uses cached maps, the other uses only dynamic map services. When a user scale is entered, a small scale above a certain threshold will switch to the cached map object and display to the nearest cache level.
When the user enters a large scale below the threshold amount, the cached map object is turned off and the dynamic map object is display, which is then zoomed to the precise scale entered by the user. (Zooming to a precise scale is not as simple as it sounds.)
Or, if you really want to get complicated, when a user scale is entered you can create a new map object and initialize it with the cached map LODs plus the user defined LOD and set up an onExtentChange event that turns off the cached layers and turns on the dynamic layer when the user defined LOD is reached. You use custom slider labels to indicate which scale level is the user custom scale. This may be a pretty significant level of overhead to pull off though.
Either way, I would definitely restrict the scale size at which custom scales can be used.