However if Android USB "accessories" which do their own processing are possible, would this mean for example that something like this - http://chemicaloliver.net/arduino/getting-nmea-data-from-an-inforad-gps-speed-camera-detector/ - a GPS unit which delivers data periodically via USB - could potentially be hooked up to the camera? That is if low-level USB support were added.
If the device acts as host, then it is theoretically possible. The device you linked isn't USB at all, let alone host capable. In general, a GPS device isn't going to be a host, even if it is USB capable, and AFAIK there is no "GPS host that sends data to device" standard, so you'd still require new custom code on both ends.
Regarding Android accessories, they are a host that uses a custom protocol created by the Android team. Theoretically, you could probably implement the device side of this on the camera, but the main reason I brought it up is because it's a clear way of showing that host support isn't just a software/driver issue.
Are hooks for low-level USB likely to be found in the disassembled firmware, or is it more complicated than this?
The code must be in the firmware, but making a fully functioning implementation would probably involve a lot of work. I know I've seen bits and pieces of it and I'm sure other CHDK developers have, but AFAIK no one has reverse engineered it to the point of doing anything useful. Our USB communication extension is built on PTP because that's what seemed easiest.
In practice, you'd be much better off using a device that already has host support and using the existing PTP extension to transfer your data. Implementing PTP code on the host will be much simpler than reverse engineering the USB stack on the camera. Or if you just want GPS, buy a camera like the sx230 or sx260 that already has GPS built in. The cost of these cameras is far less than the value of programmer time required to implement almost any alternative solution... even if your programmer only gets minimum wage!
A user has successfully implemented the CHDK PTP extension with an Arduino host, see
http://chdk.setepontos.com/index.php?topic=6969.0I'm sure there are plenty of GPS devices that you can easily connect to an Arduino. This will surely be much less work than implementing a USB driver on the camera. There are also small, cheap SBCs like
http://www.raspberrypi.org/ which would let you use the existing PTP client software with minimal modification.