A customer can do any of those things if needed.
It’s usually easier to have a vendor to it, simply because the vendor has to bring the new part with them. If you already have the part handy, then anyone can replace those parts pretty easily.
Whenever you want the customer or user to do their own work on the station, the biggest issues are supplies, instructions, and liability. Supplying the exact specifications for all the parts the user would need to replace is a must. Providing an exact list of procedures and steps used to replace these devices is also essential. Making sure the customer understands that deviating from these methods, is again, important.
All of the devices you listed above are fine…the CPU being the hardest since there are many delicate pins, CPU goo (heat paste) and so on.
I would let ´normal´ users only replace items on their machines that are desigend to be swappable. The problems you get with letting users muck arround in their PC´s will usually give you more worries then pleasure. Also you would need al kinds of spare parts arround (or send when needed) to the site.
But if you have a location that is hard (expensive, time consuming, etc.) to reach you could either:
– Train / select somebody as ´poweruser´. Your hands and eyes onsite that you can trust.
– Have 1 or 2 spare desktops/laptops on location.
In the last case if somethings breaks down. Get the spare our and have the vendor repair the broken one according to the guarantees or maintenance contract. You will need some kind of automated software management (e.g. altiris or SMS) to bring the spare up to the latest standard and patches.
With old PC´s without guarantee and maintenance that break down, I would just throw them away (recycle of course). It just not worth it to spend more time on them. The cost of people (their hours) far exceeds the cost of new hardware.