Is it possible to write an app that displays hardware infos such as the number of kernels in the processor, the available RAM, GPS, motion sensors?
Using CoreLocation and CoreMotion it’s not possible to know for sure if a GPS or an accelerometer is present on the device because of the Location Services switch.
Is it possible to check deeper for hardware?
Pretty much no. You can get some general, implied information, for example by allocating RAM until you get a warning, and then assuming that’s your available RAM. You can also check for availability of certain services, for example by asking CLLocationManager if locationServicesEnabled. But you can’t get detailed information about it to know for sure if, for example, the GPS is there, but it’s just turned off.
So the answer is no.