Hey,
I'm a high school senior and I'm going to be running at a d3 school next year. At this point your best bet is to start filling out the forms. Contacting coaches is also good. I suggest putting together an "Athletic Resume" like one of the guys suggested above. Put down significant cross country times from sophomore and junior year (or even freshman if you feel like it), if it was a sectional or state meet race, you may want to include the placing. Put down any kind of honors or positions held on the team (i.e. 1st team all-league, captain). You're basically sending the coach a preliminary application, so include any kind of stuff that you would slap down on the app. Leadership positions, grades, SAT/ACT, etc.
I went and visited schools last spring. Shoot the coach an email with the resume attached and a short little introduction. Coaches for the most part are always happy to meet with you as long as you give them a heads-up.
letters can go something like this:
Dear Coach,
My name is ABCDEFG and I am a junior at XXXXX. I run cross country and distances in track and would love to run for you at YYYYYY. I am visiting the campus on [date] and would very much appreciate the chance to stop by and meet you if that is possible. My tour is scheduled for 2:30, but I would like to meet at your convenience.
I have attached a brief athletic resume, but here's a quick summary: I have run three years of cross country in high school, two of which were at the varsity level, and was the team captain this fall. This is my third season of track. I have run a 1600 PR time of X:XX. My goals for the season are to break X:XX in the 1600 and to get close to or under XX:XX for the 3200.
Hope your season is going well. I look forward to meeting you.
XXXX
I'm not sure what to tell you in terms of D1. I didn't really get reached out to by many d1 schools that I was interested in. Filling out recruiting forms can't hurt though. Hope this helped.