I just completed my MIPs assembly class and I have a suggestion for you: Don't use PC Spim!
I've used PC Spim, Mars, and Qemu and the best for general course work is the Mars (Mips Assembler and Runtime Simulator). The editor is nice, it crashes a lot less and it allows you to easily debug and set breakpoints. It is free, open source and created by Missouri State University.
It comes as a .jar file so you can run it on both Windows and Linux.

[Mars Mips Emulator]
In the general case, an easy way to tell if a number is even or odd is to AND (bitwise) 1 with the number and if the result is 0 then the number is even.
However, since we want all the even numbers in a series we can just loop and increment our number by 2 like you did in your posted code.
When adding an immediate value you should use "addi" or "addu" instructions, not "add". You also said you wanted to put the result in register $r12 but this is not a valid MIPs register. Check out MIPs wikipedia link to see a list of all the registers: MIPS - Register Usage.
I've modified your program to work correctly. It stores the final result in $t1 and then prints the final result.
.text
.globl main
main:
li $t0, 0 # $t0 = loop counter
li $t1, 0 # $t1 = sum of even numbers
loop:
addi $t0, $t0, 2 # generating even numbers in register $t0
add $t1, $t1, $t0 # compute the sum
bne $t0, 100, loop # if t0 reached 100 then go to loop.
li $v0, 4
la $a0, result
syscall # print out "Sum = "
li $v0, 1
move $a0, $t1
syscall # print out actual sum
exit:
li $v0, 10 # terminate program run and
syscall # Exit
.data
result: .asciiz "Sum = "
After running this in Mars I get the following:
Sum = 2550
-- program is finished running --