First off, you may or may not be able to post a message to the thread which called Start: you'll only be able to do this if the thread has a message queue associated with it, and is checking that queue. UI threads do this, but e.g. threadpool threads, or threads which you've created with new Thread(), won't.
If a thread has a message queue associated with it, it's common practice to install a SynchronizationContext on that thread. You can fetch a thread's SynchronizationContext using SynchronizationContext.Current, store it away, and then post messages to that thread's message queue using that SynchronizationContext. If a thread doesn't have a SynchronizationContext installed on it, SynchronizationContext.Current returns null.
public event EventHandler StatusChanged;
private Timer timer;
private SynchronizationContext synchronizationContext;
public void Start()
{
    synchronizationContext = SynchronizationContext.Current;
    StatusChanged += new EventHandler(SomethingChangedMethod);
    timer = new Timer(Pending, null, 0, 1000);
}
private void Pending(object state)
{
    // Do Something
    if (synchronizationContext != null)
    {
        synchronizationContext.Post(_ => StatusChanged?.Invoke(this, EventArgs.Empty), null);
    } 
    else
    {
        StatusChanged?.Invoke(this, EventArgs.Empty);
    }
}