Since you mention C#, you will need a phone that runs Windows Mobile. And has GPS of course.
After you download and install the WinMob 6.1 SDK, you can simply start a Smart Device project in V. Studio.
You can read the GPS either through a SerialPort or use the GPS API. There is a managed wrapper for the API in the SDK samples folder. (The WM 5 version had some problems, Google for that).
When you can read the position, you will have to send it to a Server somewhere. WinMob has support for calling WebServices in a intermittently connected situations.