I understand the difference between the two architectures is the separation of instructions from data in the Harvard architecture. But how do I know which type of system I'm on? Is it possible to write a program such that the program determines whether the system is von Neumann or Harvard? Could there be another architecture or are these architectures the only ones known?
Your computer is a von Neumann machine. All general purpose computers are. The only exceptions are specialized co-processors like GPUs. It's not that you can't have a Harvard machine (or any other architecture). It's just that nobody builds them, especially not for sale (modulo co-processors, of course).
Most current general purpose CPUs use Modified Harvard Architecture. The CPU cores can access program and data independently in their separate L1 caches. At the outside, there are no separate program and data memories (nor the other cache levels are separated).
Could there be another architecture or are these architectures the only ones known?
All the other architectures are rather restricted in their use. Because of the extreme complexity and costs associated with processor development, I don't think anybody would try it seriously again.
However, while modern CPUs are basically von Neumann, they incorporate a lot of ideas like Dataflow Architecture internally.
Both Von Neumann and Harvard architectures belong to the Control flow paradigm.
There is another paradigm, which is Data flow.
A common example of dataflow computing, though implemented on control flow computers, is the spreadsheet (from Visicalc and Multiplan to Excel).
Neural networks also belong to this category.
When you program it: Modify a memory region and then jump there and execute it.
If it is Havard you can not do it.