Why did God seek to kill Moses?

In Exodus 4:24, when Moses was returning to Egypt it says that God sought to kill him.  Here is the verse in context.

Exo 4:21  And the LORD said to Moses, “When you go back to Egypt, see that you do all those wonders before Pharaoh which I have put in your hand. But I will harden his heart, so that he will not let the people go.
Exo 4:22  Then you shall say to Pharaoh, ‘Thus says the LORD: “Israel is My son, My firstborn.
Exo 4:23  So I say to you, let My son go that he may serve Me. But if you refuse to let him go, indeed I will kill your son, your firstborn.” ‘ “
Exo 4:24  And it came to pass on the way, at the encampment, that the LORD met him and sought to kill him.
Exo 4:25  Then Zipporah took a sharp stone and cut off the foreskin of her son and cast it at Moses’ feet, and said, “Surely you are a husband of blood to me!”
Exo 4:26  So He let him go. Then she said, “You are a husband of blood!”—because of the circumcision.

The Scripture is ambiguous.  Who did God seek to kill?  Moses, or his son?  And why?  What was the sin that God was prepared to punish with death?

While the Bible doesn’t give enough information for us to be certain, it does give enough to piece together the probable answers.

Note that verse 26 says, “So He let him go”.  God threatened to kill Moses or his son, but God let him go after Moses’ son was circumcised.  This tells us that circumcision of Moses’ son was the issue.  Note also that Zipporah was upset with Moses about the circumcision, disrespectfully throwing the foreskin at his feet and calling him “a husband of blood”. 

There are four theoretically possible scenarios we can consider.

Both Moses and Zipporah wanted to circumcise their son
If this had been the case, surely they would have circumcised their son and God would not have sought to kill anyone.

Neither Moses nor Zipporah wanted to circumcise their son
If this had been the case, surely Zipporah would not have been upset with Moses.

Zipporah wanted to circumcise their son but Moses did not
If this had been the case, surely Zipporah would not have called Moses “a husband of blood”.

Moses wanted to circumcise their son but Zipporah did not
This seems the most likely scenario.  It explains why Zipporah was upset, because she was forced to circumcise her son against her will and she blamed Moses for it.  If Moses wanted to circumcise his son then there was no reason for God to threaten to kill Moses, so God must have threatened to kill Moses’ son.

The most likely scenario is that Moses wanted to circumcise his son, but Zipporah refused.  God was having none of it and so He intervened and threatened to kill their son.  Faced with the choice of circumcising her son or having her son killed, she circumcised her son.  But Zipporah was clearly upset with Moses about it, throwing the foreskin at his feet and calling him a husband of blood.

Why did God seek to kill Moses?  He didn’t.  He sought to kill Moses’ son unless he was circumcised.