Why does thermal radiation only occur at infrared and visible frequencies? The resources that I've checked out seem to say thermal radiation only occurs in the infrared and visible spectrum. For example my heat transfer textbook and the Wikipedia page on emissivity.
In my mind thermal radiation is just energy emitted as a result of internal collisions from temperature. So, since temperature can range from 0K to huge numbers, I would think you would have a similar range of emitted energies. So then thermal radiation could occur throughout the whole of the electromagnetic spectrum.
 A: You are correct. Thermal radiation can have any frequency at all; it depends on the temperature of the radiating body. However, most bodies in the universe have temperatures that make them emit most of their radiation in the visible or infrared part of the spectrum.
If the body in question is a "black body" (one that absorbs all electromagnetic radiation falling onto it) and it is thermal equilibrium with its environment, then it emits "black body radiation". The correct spectrum of black body radiation was first calculated by Planck. It shows that a black body radiates at all frequencies, but with a peak at frequency that depends on the temperature. The sun, for example, with a temperature of $5800\:\mathrm{K}$ peaks in the yellow to green part of the visible spectrum. However, its measurable radiation extends well into the IR and UV part of the spectrum. 
Very hot stars will shine more strongly in the UV, and even into the Xray part of the spectrum. 
Another example of black body radiation is the Cosmic Microwave Background. With a temperature of $2.75\:\mathrm{K}$ the CMB peaks in the microwave part of the spectrum, at $160\:\mathrm{GHz}$.
A: Yes, radiation at any frequency can be thermal. The gas between galaxies in clusters, for example, is so hot it radiates thermal x-rays (tens of millions of Kelvin). The sun, too, emits thermal x-rays, though I don't know what combination of it is from shear brightness (ie the sun is so bright that the the black-body like spectrum of the photosphere adds up to a non-trivial number of x-rays), and the extremely hot corona (around 1 million Kelvin).
Likewise, welders are doing nothing but heating metal to temperatures between 5,000 to 20,000 Kelvins (MIG welding temperatures, TIG welding temperatures), and if they don't wear protection they get a tan or sunburn from the UV light the hot metal gives off (see the plots in @Floris's plot, and look through internet search results for "welding tan").
A: At the temperatures we normally encounter (where solids and liquids exist), the thermal radiation has high-energy brightness limits set by Planck's Law and the Stefan-Boltzmann law.   To get
significant UV (higher than visible light frequencies) from a solid material, it has to be as hot as the tungsten filament in a halogen light bulb, or the gasses of the photosphere of the sun.  Or, hotter. 
The Earth's atmosphere is not transparent to high UV energies (the so-called
"vacuum ultraviolet" region), so Earthlings find little thermal radiation of any sort above the range of visible light and near-visible UV.  Many objects emit lower-energy radiation, of course (far-infrared to millimeter wave to microwave to radio frequency), but it only dominates at very low temperatures.  A common heating "radiator" transfers more heat by air convection than by radiation.
A: If by "thermal radiation" you mean "black body radiation emitted by a warm body", then the equation that describes what you are asking about is the Planck Law, which gives the radiance as a function of wavelength $\lambda$ for a black body radiator at a particular temperature $T$:
$$B(\lambda, T) = \frac{2hc^2}{\lambda^5}\frac{1}{e^{\frac{hc}{\lambda k_B T}}-1}$$
Radiance has units of $\rm{W~sr^{-1} m^{-2} m^{-1}}$ - energy per unit angle, per unit area, per meter (because it's a function of wavelength). The shape of this distribution shifts towards the UV as temperature increases: the location of the peak is given by Wien's Displacement Law:
$$\lambda_{max}=\frac{b}{T}$$
Where $b$ is Wien's displacement constant, equal to 2.8977729(17)×10$^{−3}$ m K. This shows that the peak will shift to shorter wavelengths as the temperature increases.* 
I made a little Python program that plots Planck's Law for a number of different temperatures; by using a log scale, you can see that there is "some" energy at all wavelengths, but the curves drop off steeply:

If you repeat this plot with linear Y axis, it looks like this:

As you can see, at sufficiently high temperatures (hotter than the surface of the sun) the peak of the radiation will be in the UV (that is, below 400 nm).
Finally here is a linear plot of the curves (scaled to their respective maximum value) for some more extreme temperatures - 2041 K (melting platinum), 5777 K (sun), 10,000 K (a very hot sun), 210,000 K and 1,000,000 K (values suggested by Keith McLary)

As before - the shapes of the curves is unchanged, but the peak moves left (and the total power goes up as $T^4$.)
You can create curves like this yourself with a program like this (slightly updated code in light of Gert's suggestion):
from scipy.constants import codata
import numpy as np
import matplotlib.pyplot as plt

D = codata.physical_constants

h = D['Planck constant'][0]
k = D['Boltzmann constant'][0]
c = D['speed of light in vacuum'][0]

def planck(T, l):
    # calculate the Planck Law for a specific temperature and an array of wavelengths
    p = c*h/(k*l*T)
    result = np.zeros(np.shape(l))+1e-99
    # prevent over/underflow - compute only when p is "not too big"
    calcMe = np.where(p<700)
    result[calcMe] = (h*c*c)/(np.power(l[calcMe], 5.0) * (np.exp(p[calcMe])-1))        
    return result

# define a range of temperatures
Tbody=np.arange(2000, 12000, 2000)

# compute over a range of wavelengths - from deep UV to mm
Lvec = np.logspace(1, 6, 500)*1e-9  # wavelengths: 1 nm - 1 mm

plot1 = plt.figure()
ax = plot1.add_subplot(111)

# compute Planck function for each temperature and plot:
for ti,T in enumerate(Tbody):
    r = planck(T, Lvec)
    ax.plot(Lvec*1e9, planck(T, Lvec),label='T=%d'%T)

# create axes and labels
plotAs = 'linear' # set to 'log' for log plot
ax.set_xlabel('lambda (nm)')  
ax.set_ylabel('radiance (W/sr/m^3)')
ax.set_title('Black body spectrum')
ax.legend()
ylim = (1e-8, 2.5e14) # for clarity of log plot limit lower value

# arrow drawn at different height depending on whether this is log or linear plot
arrowHeight = 1e-4
if plotAs == 'linear':
    arrowHeight = 5e13

ax.set_ylim(ylim)
ax.plot([400, 400], ylim, color='black')
# arrow pointing away from the line
ax.annotate('', xy=(1400, arrowHeight), xytext=(400, arrowHeight), arrowprops = dict(facecolor='black', shrink = 0.05))
# text belongs to an invisible arrow...
ax.annotate('visible and IR', xy=(1400, arrowHeight), xytext=(1400, arrowHeight), arrowprops = dict(facecolor='white', edgecolor='white'))
ax.set_xscale('log')
ax.set_yscale(plotAs) # linear or logarithmic
plot1.show()


* It's obvious to see why this is so: the only place in the equation where $T$ appears, it appears as $\lambda T$ so if you increase T the entire shape of the curve will shift; and the peak will be at the same value of $\lambda T$. It follows that $\lambda \propto \frac{1}{T}$
