Creating an Original Simfile
First, find a song you like and think would work well. Experience is the best way to know for sure, but if you don't know yet, you can test most songs out within an hour.
Now decide whether you want to use the full length, or a cut version of the song. Full-length songs frequently have verses with uninteresting step possibilities, which greatly annoys players; but cuts can be difficult to do appropriately.
Finally, decide on which step editor(s) you will be using. Many people use Stepmania's built-in editor along with an external BPM-finding program; others use a third party program such as DDReam Studio or Stependous which are "all-in-one" editors with some excellent functionality and assistance.
Cutting the Song
1. Run Audacity. (there are other programs, but Audacity is good and it's free)
2. Load your song.
3. If you want to take off the start or end, seek through the song until you find the start/end time. Then decide whether or not you will do a fade.
3a. Without the fade, select the time you want; then use the Edit option "select before/after marker" to select the unwanted area, and hit delete.
3b. With fading, select the fade area using the mouse. Then choose Fade in/out under the Effects menu. Then cut the unwanted area as above.
4. To cut verses of the song, select with the mouse the area you wish to cut; be conservative, and try to make each end of the cut go over the song's chorus(so that the resulting sound doesn't suddenly change). Then zoom in, and repeat with the remainder until you can cut no more. In many cases this will be sufficient.
Synchronizing the song is a challenging and somewhat subjective problem, and many tools have been invented to help attack it.
There are two different problems, in fact: one is the BPM, and the other is the offset.
Finding an exact BPM is necessary because otherwise, each note will "drift" away from the song. And songs that are recorded without any computerized help (live drummer, no click track etc.) will have a BPM that changes (if ever so slightly) with every beat.
One tool that can do both the constant and variable cases well is PyNudge. A simpler tool that helps only with constant BPM is WinBPM. Both of these rely on the user tapping out the song's beat and then calculating an average BPM from that. There are also programs that can do an analysis of the song so that no tapping is necessary, but these are also only applicable in the case of constant BPM.
For the best precision or simply the toughest songs, DDReam Studio (DS) offers a high-speed drag-and-drop precision beat editor that supports variable BPM. It includes a waveform view so that you can actually see where the beats occur in the music.
Finding the offset is a much simpler problem, but it requires a precise ear to feel the point where one is exactly on the beat, and this can be troublesome when following instruments that do not have an obvious peak of energy. Slowing down the song playback is very helpful in reaching the kind of precision needed for a good offset.
Also, if your BPM is slightly inaccurate on the first try, you'll know only by letting the song play for a full minute or two; keep this in mind and test your offset at both the start and the end of the song.
DDReam Studio (DS) (see above) natively supports an optimized Offset value. You will not need to further adjust the Offset if you use DS.
Here's where the process gets more artistic. You have to zero in on the elements of the song that will flow well for the player while providing an appropriate amount of challenge. Sometimes songs will be very simple, and that will impose a limit on how hard you can make it without simply throwing in awkward patterns. Others will be very fast, fast enough that you have to leave parts out to make it playable. Other times they will have incredibly complex rhythms, and those kinds of songs are very time-consuming and frustrating to do, as one has to not only decipher the correct pattern, but also strike a balance between what actually plays in the song and what the player can easily read.
Also, songs geared toward different modes of play(usually pad vs. keyboard) are subject to different standards of speed and complexity. For example, there are only a few awkward keyboard steps, while many exist on the pad.