Sounds like you have a few issues.
If adding a trigger means the player can't move, that means you've got the event set to Autorun. Autorun MEANS the player can't move. You should change it to Parallel Process. Even in a parallel process, if you've got a loop inside and you want it to be constantly running, you should add a Wait 10 Frames (or some number) because you don't need to check for this condition the default 60 times a second (that could also affect performance, though it is probably NOT why your character can't move).
However, by the time your event even triggers, HP is already <= 0, and the death processing has happened. You don't get a chance, in events and common events, to tell it to do something else.
Also, are you constantly updating variable 1 to contain the player's HP? You can't just say Control Variables [1] = Player's HP at the start of the game and expect it to ALWAYS stay up to date - if the player's HP is 10 when you run the Control Variables command, then variable 1 will always contain 10, even if the player has levelled up and gone up to 1000HP since. You would need to do Control Variables [1] = Player's HP immediately before the Conditional Branch. Or you could just do it as a Conditional Branch: Script: $game_actor[1].hp <= 0 and ditch the variable altogether.
How many actors are in your party? Do you want them ALL to ALWAYS have 1 HP or more? Or are you only concerned with at least ONE of them still being "alive"? If you have several actors and you always want them ALL to have HP, you will need to repeat the test for each actor, which then means you have to do a test to see if the actor is in the party.
Also, by putting it in a common event, unless you have an added script, it's not going to run in battles.
How many ways can the player die? In battle? On the map as a result of slip damage (poison)? Any other ways?
I would just add a little script snippet that overrides the hp= method to not allow it to go below 1 for a party member. That means it's going to do the check exactly at the time HP changes and no other time, which is exactly what you want, to avoid testing/processing when nothing has changed. It also handles a party of any size, without having to check to see who's IN the party or how many are in the party.
In a new script slot below all others (above Main), put this:
Code:class Game_Actor < Game_Battler def hp=(hp) super([hp,1].max) endend