Why PINxn with pullup reads zero when nothing is connected to it?
Go to page 68 of your datasheet.
Have a look at the 2nd paragraph  


  When reading back a software assigned pin value, a nop instruction
  must be inserted as indicated ...


The same rational applies here when you enable the pullup - you need at least a single-instruction delay between enabling the pullup (or setting the output) and reading the pin state.
This allows the IO synchronization flip-flops (See the "SYNCHRONIZER" block in Fig 10-2 on page 66) to do their job.  

Since you've indicated that you have some 'long' wires connected to this pin, you might have enough capacitance on the line to further delay the rise-time of the signal, so it's possible that a single nop might not be enough.
But you would need to do some careful measurements (looking at the rise-time) or calculations (the RC time constant using the values of pullup resistance and extra capacitance) to be sure.