You are not actually updating your old state. Since you are passing those as arguments and the GamePadState is actually a structure,
Old = Curr;
updates only the local copy of the 'old' variable. Pass them by reference like
void ShipUpdate(ref GamePadState Curr, ref GamePadState Old)