You could use a Get Value/Store Value component (under Input Output - Persistent Storage) to "persist" the state of the workflow.
At the beginning of the flow, use a Get Value to get a state value and read it to determine if "running". If "running", abort; if "done", continue with the flow, but set the value to "running". At the end of the flow, set the value back to "done". Also set to "done" if any exception paths are encountered :) If your flow is tunning on a schedule, sticking this logic in a Configurable Auto Start component is the way to go.
Probably better ways to do this, but outside of using a database or raiding task lists, this is a quick and easy way.