The prefix "bi" is Latin in origin; it means "two." If it is used with a word for a time period, such as monthly, it literally means "every two" or "every other." For instance, if you are paid biweekly, you are paid every other or every two weeks. The same applies to the word "bimonthly," which means "every other" or "every two" months. This can be confusing because it is sometimes used incorrectly to indicate twice a month.
The prefix "semi" also comes from Latin and means half. It technically means "twice every" instead of "every other." Semi-annually means twice every year. For example, daylight-saving time changes occur semi-annually, in spring and fall." Therefore if someone says she is paid semi-monthly, it means she is paid "twice every" month rather than bimonthly, which would mean once every two months.
Easy ways exist to remember the distinct differences between "bi" and "semi." A bicycle has two wheels. Bifocals have two lenses. Bisexual means someone is attracted to people of two sexes. "Bi" then multiplies by two. "Bimonthly" would equal two months. If you eat semi-sweet chocolate, however, you're eating chocolate that is half as sweet. Semi-formal dresses are not entirely formal. "Semi" divides in half, so "semi-monthly" means twice a month.
When in doubt, specify the actual time frame rather than using a prefix. If you are paid every two weeks, "biweekly" or "every two weeks" is more accurate than "semi-monthly" or "twice a month." The more detailed and accurate term is "once every two weeks." Instead of saying you are paid "semi-monthly" you could simply say that you are paid twice a month, once on the first and once on the 15th.