There are probably a lot of ways you could do it, but the way I'd do it is something like:
if position_meeting(x,y,objIcePatch)
{
if keyboard_check_pressed(vk_left/right/whatever)
{
if iceslide = 0
{
iceslide = 1
//movement code here
}
}
}
So that way it'll only set it once, and you'll only be able to move once iceslide = 0 again, which you'll have to set with collisions into walls or whatever.
You'll also need to set a check with your regular movement code for iceslide = 0 so you can't move until you stop sliding.
I just came up with this on the spot, and I haven't tested it yet, so let me know if it works or not.