So having finished the first season I've come to the rather crazy conclusion that the person who killed Nathan was ... Nathan.
Nathan was the one person shown to have the skills to hack machines and use them to kill people. Nathan is even shown hacking his own car and using a video game controller to drive it. He shuts down the AI and messes with its memory.
Why would Nathan kill Nathan? We get the impression that Nathan was on to something big. Someone else was after Nathan as we see the creepy guy looking in on him after his crash. What better way to get assassins off your back than them seeing you dead? Of course normally the downside to killing yourself is that you end up ... dead.
So how does Nathan plan to avoid ending up dead? The show introduces the concept of downloading into a clone. The show also mentions backing up your memories outside of the finale uploading process. We know that Nathan was working on a free version of afterlife, so the code behind uploading and downloading should be known to him.
So, in theory, Nathan creates a clone, copies his memories into it, corrupting key memories that he doesn't want the clone or anyone else to know. Nathan sends the clone out into his life for enough time to make sure whoever is out to get him is following the clone. Nathan hacks the car and kills the clone. There's a body, anyone tracking Nathan sees him die. Real Nathan is then in the clear. Except Ingrid screws this up by uploading the clone of Nathan (and possibly by changing the settings on the car to protect the driver). Now real Nathan tries to cover loose ends by deleting the corrupted memories.