Hi,
Even with a proper programmer like a pickit2 /3 , there are certain limitations to ICSP in that you have to avoid 'loading' the programmer ports with the targets circuitry.
With some things like a keypad or lcd lines you can simply use resistors to avoid this loading.
If you are going to build your own, recommned the USB pickit2 lite as shown in this forum many times - it does need a 18f2550 pre programmed, but why not post here for someone local to program your chip.