I was wondering if I could make this happen without using FilteringEnabled. If it is possible, would I just make the SurfaceGui not "visible" via a localscript IN the GUI?
You can.
This is done by putting the SurfaceGui object into the StarterGui, and then assigning the Adornee property to the object you want the SurfaceGui to appear on.