There are numerous approaches to make timing synchronization at the receiver. Yes, they are based on correlation in general.
But some rought methods also exist, e.g. you can track power of the input signal by two windows, and comparing measured window power values, you can detect begining of the signal. Of course it will work unreliably at bad SNR scenario. And also some time uncertainty will exist.
So the matched filter is quite good idea. If you are dealing with streaming modem, you can use partly signal periodicity to detect signal at first and then make timing (like it's done in DVB-T for example). If packet modem is your case, you have to use frame header for the detection and timing problems.
The main idea here that if you work with stream you can loose some data, while you are in synchronization process (you can trade off synchronization rapidness and its hardware complexity). But if you work with packet communications you're not allowed to loose frames if it's possible. So you must complete your synchronization with the aid of frame header only.
And if you're not sure about the type of sync symbol yet, try maximum length sequences for example, they are quite common for such a task.
Hope this helps.